From 185440571a30aebef52cacb78cf7326c642201df Mon Sep 17 00:00:00 2001 From: Tanasart Date: Thu, 9 Jan 2025 14:28:19 +0700 Subject: [PATCH] modularize node data --- PixelComposer.yyp | 239 +-- datafiles/data/Nodes.zip | Bin 305147 -> 0 bytes datafiles/data/{ => Nodes}/Actions.zip | Bin .../Actions/Nodes/Armature Build.json | 0 .../Actions/Nodes/Armature Build.png | Bin .../Actions/Nodes/Create Tilemap.json | 0 .../Actions/Nodes/Create Tilemap.png | Bin .../Actions/Nodes/Follow Path.json | 0 .../{ => Nodes}/Actions/Nodes/Follow Path.png | Bin .../{ => Nodes}/Actions/Nodes/Iso cube.json | 0 .../{ => Nodes}/Actions/Nodes/Iso cube.png | Bin .../Actions/Nodes/Line from Path.json | 0 .../Actions/Nodes/Line from Path.png | Bin .../Actions/Nodes/Pixel iso cube.json | 0 .../Actions/Nodes/Pixel iso cube.png | Bin .../data/{ => Nodes}/Actions/icons.afdesign | Bin datafiles/data/Nodes/Internal.zip | Bin 0 -> 360645 bytes .../{3D Camera => Node_3D_Camera}/info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../{3D Cone => Node_3D_Mesh_Cone}/info.json | 2 + .../{3D Cube => Node_3D_Mesh_Cube}/info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../{3D Object => Node_3D_Mesh_Obj}/info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../{3D Repeat => Node_3D_Repeat}/info.json | 2 + .../info.json | 2 + .../3D/{3D Scene => Node_3D_Scene}/info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../{UV Remap => Node_3D_UV_Remap}/info.json | 2 + .../info.json | 1 + .../3D/{Bevel => Node_Bevel}/info.json | 1 + .../3D/{Normal => Node_Normal}/info.json | 1 + .../info.json | 1 + .../3D/{RM Cloud => Node_RM_Cloud}/info.json | 1 + .../{RM Combine => Node_RM_Combine}/info.json | 2 + .../info.json | 2 + .../{RM Render => Node_RM_Render}/info.json | 2 + .../{RM Terrain => Node_RM_Terrain}/info.json | 2 + .../info.json | 1 + .../info.json | 1 + .../info.json | 2 + .../info.json | 2 + .../{Frame Index => Node_Counter}/info.json | 1 + .../Animation/{Delay => Node_Delay}/info.json | 2 + .../FFT => Animation/Node_FFT}/info.json | 2 + .../{Ease => Node_Fn_Ease}/info.json | 2 + .../{Math => Node_Fn_Math}/info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../Node_Plot_Linear}/info.json | 2 + .../{Rate Remap => Node_Rate_Remap}/info.json | 2 + .../{Reverse => Node_Revert}/info.json | 2 + .../{Stagger => Node_Stagger}/info.json | 2 + .../Node_WAV_File_Read}/info.json | 2 + .../info.json | 2 + .../{Wiggler => Node_Wiggler}/info.json | 1 + .../Color/{Color => Node_Color}/info.json | 1 + .../{Color Data => Node_Color_Data}/info.json | 1 + .../{HSV Color => Node_Color_HSV}/info.json | 1 + .../{Mix Color => Node_Color_Mix}/info.json | 2 + .../info.json | 1 + .../{RGB Color => Node_Color_RGB}/info.json | 1 + .../{Find pixel => Node_Find_Pixel}/info.json | 2 + .../info.json | 2 + .../{Gradient => Node_Gradient_Out}/info.json | 1 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 1 + .../Color/{Palette => Node_Palette}/info.json | 1 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../Color/{Sampler => Node_Sampler}/info.json | 1 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../Compose/{Blend => Node_Blend}/info.json | 1 + .../Compose/{Camera => Node_Camera}/info.json | 1 + .../{Composite => Node_Composite}/info.json | 1 + .../Export => Compose/Node_Export}/info.json | 1 + .../{Image Grid => Node_Image_Grid}/info.json | 2 + .../info.json | 2 + .../info.json | 1 + .../Compose/{Stack => Node_Stack}/info.json | 2 + .../Internal/Custom/Node_Custom/info.json | 9 + .../info.json | 1 + .../{Brush => Node_Brush_Linear}/info.json | 1 + .../Extra/{Caustic => Node_Caustic}/info.json | 1 + .../{Flow Noise => Node_Flow_Noise}/info.json | 1 + .../info.json | 1 + .../info.json | 1 + .../info.json | 1 + .../info.json | 1 + .../info.json | 1 + .../{MK Sparkle => Node_MK_Sparkle}/info.json | 1 + .../info.json | 1 + .../info.json | 1 + .../info.json | 1 + .../info.json | 1 + .../{RM Cloud => Node_RM_Cloud}/info.json | 1 + .../info.json | 1 + .../info.json | 1 + .../info.json | 1 + .../info.json | 1 + .../info.json | 4 +- .../info.json | 4 +- .../{Destroy => Node_FLIP_Destroy}/info.json | 4 +- .../{Domain => Node_FLIP_Domain}/info.json | 4 +- .../{Render => Node_FLIP_Render}/info.json | 4 +- .../{Repel => Node_FLIP_Repel}/info.json | 4 +- .../{Spawner => Node_FLIP_Spawner}/info.json | 4 +- .../{Update => Node_FLIP_Update}/info.json | 4 +- .../{Vortex => Node_FLIP_Vortex}/info.json | 4 +- .../info.json | 4 +- .../Nodes/Internal/Feedback/Input/info.json | 8 - .../Feedback/Node_Feedback_Input/info.json | 9 + .../Feedback/Node_Feedback_Output/info.json | 9 + .../Node_Group_Thumbnail}/info.json | 5 +- .../Nodes/Internal/Feedback/Output/info.json | 8 - .../{2D Light => Node_2D_light}/info.json | 1 + .../info.json | 1 + .../info.json | 1 + .../{Pixel Expand => Node_Atlas}/info.json | 1 + .../{Average => Node_Average}/info.json | 2 + .../Internal/Filter/{BW => Node_BW}/info.json | 1 + .../Filter/{Blend => Node_Blend}/info.json | 1 + .../{Blend Edge => Node_Blend_Edge}/info.json | 2 + .../{Blobify => Node_Blobify}/info.json | 2 + .../Filter/{Bloom => Node_Bloom}/info.json | 1 + .../Filter/{Blur => Node_Blur}/info.json | 1 + .../{Lens Blur => Node_Blur_Bokeh}/info.json | 2 + .../{Box Blur => Node_Blur_Box}/info.json | 2 + .../info.json | 1 + .../info.json | 1 + .../{Path Blur => Node_Blur_Path}/info.json | 2 + .../info.json | 2 + .../{Shape Blur => Node_Blur_Shape}/info.json | 2 + .../info.json | 2 + .../{Slope Blur => Node_Blur_Slope}/info.json | 2 + .../{Zoom Blur => Node_Blur_Zoom}/info.json | 1 + .../{Brush => Node_Brush_Linear}/info.json | 1 + .../info.json | 1 + .../info.json | 1 + .../info.json | 1 + .../info.json | 1 + .../info.json | 1 + .../{Colorize => Node_Colorize}/info.json | 1 + .../info.json | 1 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../{Round Corner => Node_Corner}/info.json | 2 + .../Filter/{Curve => Node_Curve}/info.json | 2 + .../{HSV Curve => Node_Curve_HSV}/info.json | 2 + .../{De-Corner => Node_De_Corner}/info.json | 1 + .../{De-Stray => Node_De_Stray}/info.json | 1 + .../Filter/{Dilate => Node_Dilate}/info.json | 1 + .../{Displace => Node_Displace}/info.json | 1 + .../Filter/{Dither => Node_Dither}/info.json | 1 + .../info.json | 2 + .../info.json | 1 + .../Filter/{Erode => Node_Erode}/info.json | 1 + .../Filter/{FXAA => Node_FXAA}/info.json | 1 + .../{Gamma Map => Node_Gamma_Map}/info.json | 2 + .../Filter/{Glow => Node_Glow}/info.json | 1 + .../Filter/{Grain => Node_Grain}/info.json | 2 + .../info.json | 1 + .../{Greyscale => Node_Greyscale}/info.json | 1 + .../{Input => Node_Group_Input}/info.json | 5 +- .../Node_Group_Output}/info.json | 5 +- .../Node_Group_Thumbnail}/info.json | 5 +- .../info.json | 2 + .../{High Pass => Node_High_Pass}/info.json | 2 + .../{Interlace => Node_Interlaced}/info.json | 2 + .../Filter/{Invert => Node_Invert}/info.json | 1 + .../info.json | 5 +- .../Node_Iterator_Index}/info.json | 5 +- .../Node_Iterator_Length}/info.json | 5 +- .../Filter/{JPEG => Node_JPEG}/info.json | 2 + .../{Kuwahara => Node_Kuwahara}/info.json | 2 + .../Filter/{Level => Node_Level}/info.json | 1 + .../info.json | 1 + .../{Liquefy => Node_Liquefy}/info.json | 2 + .../info.json | 2 + .../Filter/{Mirror => Node_Mirror}/info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../{Normalize => Node_Normalize}/info.json | 2 + .../{Outline => Node_Outline}/info.json | 1 + .../info.json | 2 + .../info.json | 2 + .../info.json | 1 + .../{Pixel Math => Node_Pixel_Math}/info.json | 2 + .../{Pixel Sort => Node_Pixel_Sort}/info.json | 1 + .../{Posterize => Node_Posterize}/info.json | 1 + .../info.json | 1 + .../Filter/{SDF => Node_SDF}/info.json | 2 + .../Filter/{Shadow => Node_Shadow}/info.json | 1 + .../info.json | 2 + .../{Shape Map => Node_Shape_Map}/info.json | 2 + .../{Shuffle => Node_Shuffle}/info.json | 2 + .../Filter/{Smear => Node_Smear}/info.json | 2 + .../{Spherize => Node_Spherize}/info.json | 2 + .../info.json | 2 + .../info.json | 1 + .../{Threshold => Node_Threshold}/info.json | 2 + .../{Time Remap => Node_Time_Remap}/info.json | 1 + .../{ACE => Node_Tonemap_ACE}/info.json | 2 + .../Filter/{Trail => Node_Trail}/info.json | 2 + .../Filter/{Twirl => Node_Twirl}/info.json | 1 + .../{Vignette => Node_Vignette}/info.json | 2 + .../info.json | 2 + .../{Caustic => Node_Caustic}/info.json | 1 + .../info.json | 1 + .../{Checker => Node_Checker}/info.json | 1 + .../info.json | 2 + .../{Diffuse => Node_Diffuse}/info.json | 2 + .../info.json | 2 + .../{Flood Fill => Node_Flood_Fill}/info.json | 2 + .../{Flow Noise => Node_Flow_Noise}/info.json | 1 + .../{Fold Noise => Node_Fold_Noise}/info.json | 2 + .../info.json | 1 + .../info.json | 1 + .../info.json | 1 + .../Generate/{Grid => Node_Grid}/info.json | 1 + .../info.json | 1 + .../info.json | 1 + .../info.json | 1 + .../info.json | 1 + .../info.json | 1 + .../info.json | 2 + .../{Julia => Node_Julia_Set}/info.json | 2 + .../{Draw Line => Node_Line}/info.json | 1 + .../{MK Blinker => Node_MK_Blinker}/info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../{MK Fall => Node_MK_Fall}/info.json | 2 + .../{MK Flag => Node_MK_Flag}/info.json | 2 + .../info.json | 2 + .../info.json | 1 + .../info.json | 2 + .../info.json | 2 + .../{MK Rain => Node_MK_Rain}/info.json | 2 + .../{MK Saber => Node_MK_Saber}/info.json | 2 + .../{MK Sparkle => Node_MK_Sparkle}/info.json | 1 + .../info.json | 2 + .../{MK Tile => Node_MK_Tile}/info.json | 2 + .../Generate/{Noise => Node_Noise}/info.json | 1 + .../info.json | 1 + .../info.json | 1 + .../info.json | 1 + .../info.json | 2 + .../info.json | 2 + .../{Particle => Node_Particle}/info.json | 1 + .../info.json | 2 + .../{Perlin Noise => Node_Perlin}/info.json | 1 + .../info.json | 1 + .../info.json | 2 + .../info.json | 2 + .../Node_Plot_Linear}/info.json | 2 + .../info.json | 1 + .../info.json | 2 + .../{Reaction Diffusion => Node_RD}/info.json | 2 + .../info.json | 2 + .../info.json | 1 + .../info.json | 2 + .../{Repeat => Node_Repeat}/info.json | 2 + .../info.json | 1 + .../info.json | 2 + .../{Scatter => Node_Scatter}/info.json | 1 + .../info.json | 1 + .../{Draw Shape => Node_Shape}/info.json | 1 + .../info.json | 2 + .../info.json | 1 + .../Generate/{Sky => Node_Sky}/info.json | 1 + .../info.json | 2 + .../Generate/{Solid => Node_Solid}/info.json | 1 + .../info.json | 2 + .../{Stripe => Node_Stripe}/info.json | 1 + .../{Draw Text => Node_Text}/info.json | 1 + .../info.json | 2 + .../{VFX => Node_VFX_Group_Inline}/info.json | 1 + .../info.json | 1 + .../info.json | 1 + .../{Zigzag => Node_Zigzag}/info.json | 1 + .../Node_Group_Input}/info.json | 5 +- .../Node_Group_Output}/info.json | 5 +- .../info.json | 5 +- .../Nodes/Internal/Hidden/Feedback/info.json | 7 - .../Internal/Hidden/Filter Input/info.json | 7 - .../Internal/Hidden/Filter Output/info.json | 7 - .../Internal/Hidden/Grid Noise/info.json | 7 - .../Internal/Hidden/Hexagonal Noise/info.json | 7 - .../Nodes/Internal/Hidden/Input/info.json | 7 - .../Internal/Hidden/Loop Array/info.json | 7 - .../Internal/Hidden/Loop Input/info.json | 7 - .../Internal/Hidden/Loop Output/info.json | 7 - .../data/Nodes/Internal/Hidden/Loop/info.json | 7 - .../Hidden/Node_DynaSurf_In/info.json | 8 + .../Hidden/Node_DynaSurf_Out/info.json | 8 + .../Hidden/Node_DynaSurf_Out_Height/info.json | 8 + .../Hidden/Node_DynaSurf_Out_Width/info.json | 8 + .../Hidden/Node_Feedback_Inline/info.json | 8 + .../Internal/Hidden/Node_Grid_Noise/info.json | 8 + .../Hidden/Node_Iterate_Each/info.json | 8 + .../info.json | 2 + .../Hidden/Node_Iterate_Inline/info.json | 8 + .../info.json | 2 + .../Node_Iterator_Each_Inline_Input/info.json | 8 + .../info.json | 8 + .../Hidden/Node_Iterator_Each_Input/info.json | 8 + .../Node_Iterator_Each_Output/info.json | 8 + .../info.json | 8 + .../info.json | 8 + .../Node_Iterator_Filter_Input/info.json | 8 + .../Node_Iterator_Filter_Output/info.json | 8 + .../Node_Iterator_Sort_Inline_Input/info.json | 8 + .../info.json | 8 + .../Hidden/Node_Iterator_Sort_Input/info.json | 8 + .../Node_Iterator_Sort_Output/info.json | 8 + .../Internal/Hidden/Node_Noise_Hex/info.json | 9 + .../Internal/Hidden/Node_Noise_Tri/info.json | 9 + .../Internal/Hidden/Node_Onion_Skin/info.json | 9 + .../{RigidSim => Node_Rigid_Group}/info.json | 3 + .../{SmokeSim => Node_Smoke_Group}/info.json | 3 + .../info.json | 3 + .../Internal/Hidden/Node_VFX_Group/info.json | 8 + .../Internal/Hidden/Onion Skin/info.json | 7 - .../Nodes/Internal/Hidden/Output/info.json | 7 - .../Internal/Hidden/Sort Input/info.json | 7 - .../Internal/Hidden/Sort Output/info.json | 7 - .../Hidden/Triangular Noise/info.json | 7 - .../data/Nodes/Internal/Hidden/VFX/info.json | 7 - .../Nodes/Internal/Hidden/getHeight/info.json | 7 - .../Nodes/Internal/Hidden/getWidth/info.json | 7 - .../info.json | 2 + .../IO/{ASE Tag => Node_ASE_Tag}/info.json | 2 + .../{ASE Layer => Node_ASE_layer}/info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../IO/{Canvas => Node_Canvas}/info.json | 1 + .../info.json | 2 + .../info.json | 2 + .../Export => IO/Node_Export}/info.json | 1 + .../IO/{GMRoom => Node_GMRoom}/info.json | 3 +- .../IO/{HTTP => Node_HTTP_request}/info.json | 2 + .../IO/{Image => Node_Image}/info.json | 1 + .../info.json | 1 + .../info.json | 1 + .../info.json | 1 + .../{Image GIF => Node_Image_gif}/info.json | 1 + .../info.json | 2 + .../info.json | 2 + .../IO/{MIDI In => Node_MIDI_In}/info.json | 2 + .../Internal/IO/{SVG => Node_SVG}/info.json | 1 + .../info.json | 1 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../{Tile Rule => Node_Tile_Rule}/info.json | 2 + .../info.json | 2 + .../{Tileset => Node_Tile_Tileset}/info.json | 2 + .../Node_WAV_File_Read}/info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../Nodes/Internal/Loop/Loop Input/info.json | 8 - .../Nodes/Internal/Loop/Loop Output/info.json | 8 - .../Input => Loop/Node_Group_Input}/info.json | 5 +- .../Node_Group_Output}/info.json | 5 +- .../info.json | 5 +- .../info.json | 5 +- .../Node_Iterator_Index}/info.json | 5 +- .../Loop/Node_Iterator_Input/info.json | 9 + .../Node_Iterator_Length}/info.json | 5 +- .../Loop/Node_Iterator_Output/info.json | 9 + .../info.json | 2 + .../{GUI In => Node_Application_In}/info.json | 2 +- .../info.json | 2 +- .../{Argument => Node_Argument}/info.json | 3 +- .../{Array Pin => Node_Array_Pin}/info.json | 2 + .../Misc/{Assert => Node_Assert}/info.json | 2 +- .../Misc/{Cache => Node_Cache}/info.json | 2 + .../info.json | 2 + .../{Condition => Node_Condition}/info.json | 1 + .../info.json | 1 + .../info.json | 1 + .../{Feedback => Node_Feedback}/info.json | 3 +- .../Misc/{Frame => Node_Frame}/info.json | 1 + .../info.json | 2 +- .../Misc/{Group => Node_Group}/info.json | 2 +- .../Misc/{HLSL => Node_HLSL}/info.json | 2 + .../Misc/{Loop => Node_Iterate}/info.json | 3 +- .../Node_Iterate_Each_Inline}/info.json | 1 + .../info.json | 2 + .../info.json | 2 + .../{Lua Global => Node_Lua_Global}/info.json | 2 + .../info.json | 2 + .../info.json | 2 +- .../Internal/Misc/{Pin => Node_Pin}/info.json | 1 + .../Misc/{Print => Node_Print}/info.json | 2 + .../info.json | 3 +- .../{Execute Shell => Node_Shell}/info.json | 2 + .../{Slideshow => Node_Slideshow}/info.json | 2 +- .../Misc/{Switch => Node_Switch}/info.json | 2 + .../info.json | 3 +- .../{Tunnel In => Node_Tunnel_In}/info.json | 1 + .../{Tunnel Out => Node_Tunnel_Out}/info.json | 1 + .../info.json | 2 +- .../{Input => Node_Group_Input}/info.json | 5 +- .../Node_Group_Output}/info.json | 5 +- .../info.json | 3 + .../info.json | 3 + .../info.json | 4 +- .../{Object => Node_Rigid_Object}/info.json | 3 + .../info.json | 3 + .../info.json | 3 + .../{Render => Node_Rigid_Render}/info.json | 3 + .../Node_Rigid_Render_Output/info.json | 10 + .../info.json | 3 + .../RigidSim/Node_Rigid_Wall/info.json | 10 + .../Nodes/Internal/RigidSim/Wall/info.json | 8 - .../Nodes/Internal/SmokeSim/Input/info.json | 16 - .../SmokeSim/Node_Group_Input/info.json | 17 + .../SmokeSim/Node_Group_Output/info.json | 17 + .../{Add Emitter => Node_Smoke_Add}/info.json | 3 + .../info.json | 3 + .../info.json | 3 + .../{Domain => Node_Smoke_Domain}/info.json | 4 +- .../info.json | 3 + .../info.json | 3 + .../Node_Smoke_Render_Output/info.json | 11 + .../{Repulse => Node_Smoke_Repulse}/info.json | 3 + .../info.json | 3 + .../info.json | 3 + .../{Vortex => Node_Smoke_Vortex}/info.json | 3 + .../Nodes/Internal/SmokeSim/Output/info.json | 16 - .../Nodes/Internal/StrandSim/Input/info.json | 16 - .../StrandSim/Node_Group_Input/info.json | 17 + .../StrandSim/Node_Group_Output/info.json | 17 + .../info.json | 3 + .../info.json | 3 + .../info.json | 3 + .../info.json | 3 + .../info.json | 3 + .../info.json | 3 + .../info.json | 3 + .../info.json | 3 + .../info.json | 3 + .../Nodes/Internal/StrandSim/Output/info.json | 16 - .../{Nine Slice => Node_9Slice}/info.json | 1 + .../Transform/{Bend => Node_Bend}/info.json | 2 + .../{Composite => Node_Composite}/info.json | 1 + .../Transform/{Crop => Node_Crop}/info.json | 1 + .../info.json | 1 + .../Transform/{Flip => Node_Flip}/info.json | 1 + .../{Mesh Warp => Node_Mesh_Warp}/info.json | 1 + .../{Mirror => Node_Mirror}/info.json | 2 + .../info.json | 2 + .../{Offset => Node_Offset}/info.json | 1 + .../{Padding => Node_Padding}/info.json | 1 + .../Transform/{Polar => Node_Polar}/info.json | 1 + .../Transform/{Scale => Node_Scale}/info.json | 1 + .../info.json | 1 + .../Transform/{Skew => Node_Skew}/info.json | 1 + .../info.json | 2 + .../{Transform => Node_Transform}/info.json | 1 + .../Transform/{Warp => Node_Warp}/info.json | 1 + .../{Area Warp => Node_Wrap_Area}/info.json | 1 + .../data/Nodes/Internal/VFX/Input/info.json | 16 - .../Internal/VFX/Node_Group_Input/info.json | 17 + .../Internal/VFX/Node_Group_Output/info.json | 17 + .../info.json | 2 + .../{Attract => Node_VFX_Attract}/info.json | 2 + .../VFX/{Boids => Node_VFX_Boids}/info.json | 3 + .../{Destroy => Node_VFX_Destroy}/info.json | 2 + .../info.json | 3 + .../info.json | 3 + .../{Renderer => Node_VFX_Renderer}/info.json | 2 + .../VFX/Node_VFX_Renderer_Output/info.json | 10 + .../VFX/{Repel => Node_VFX_Repel}/info.json | 2 + .../{Spawner => Node_VFX_Spawner}/info.json | 2 + .../{VFX Trail => Node_VFX_Trail}/info.json | 3 + .../info.json | 3 + .../info.json | 2 + .../info.json | 3 + .../VFX/{Vortex => Node_VFX_Vortex}/info.json | 2 + .../VFX/{Wind => Node_VFX_Wind}/info.json | 2 + .../data/Nodes/Internal/VFX/Output/info.json | 16 - .../Values/{Area => Node_Area}/info.json | 1 + .../Values/{Array => Node_Array}/info.json | 2 + .../{Array Add => Node_Array_Add}/info.json | 1 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../{Array Copy => Node_Array_Copy}/info.json | 2 + .../{Array Find => Node_Array_Find}/info.json | 2 + .../{Array Get => Node_Array_Get}/info.json | 2 + .../info.json | 3 + .../info.json | 1 + .../info.json | 1 + .../info.json | 2 + .../info.json | 3 + .../info.json | 2 + .../info.json | 2 + .../{Array Set => Node_Array_Set}/info.json | 3 + .../info.json | 2 + .../info.json | 2 + .../{Sort Array => Node_Array_Sort}/info.json | 2 + .../info.json | 1 + .../{Array Zip => Node_Array_Zip}/info.json | 2 + .../{Draw Atlas => Node_Atlas_Draw}/info.json | 2 + .../{Atlas Get => Node_Atlas_Get}/info.json | 2 + .../{Atlas Set => Node_Atlas_Set}/info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../{Boolean => Node_Boolean}/info.json | 2 + .../{Compare => Node_Compare}/info.json | 1 + .../{Equation => Node_Equation}/info.json | 1 + .../FFT => Values/Node_FFT}/info.json | 2 + .../{IsoSurf => Node_IsoSurf}/info.json | 2 + .../Node_Iterate_Each_Inline}/info.json | 1 + .../info.json | 2 + .../info.json | 2 + .../{Logic Opr => Node_Logic}/info.json | 1 + .../Values/{Math => Node_Math}/info.json | 1 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../Values/{Number => Node_Number}/info.json | 1 + .../Values/{Path => Node_Path}/info.json | 1 + .../{3D Path => Node_Path_3D}/info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../{Bake Path => Node_Path_Bake}/info.json | 2 + .../{Blend Path => Node_Path_Blend}/info.json | 1 + .../info.json | 2 + .../info.json | 2 + .../{Fill Path => Node_Path_Fill}/info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../{Map Path => Node_Path_Map}/info.json | 2 + .../info.json | 2 + .../{Morph Path => Node_Path_Morph}/info.json | 2 + .../{Plot Path => Node_Path_Plot}/info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 1 + .../info.json | 2 + .../info.json | 2 + .../{Shape Path => Node_Path_Shape}/info.json | 2 + .../{Shift Path => Node_Path_Shift}/info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../{Trim Path => Node_Path_Trim}/info.json | 2 + .../{Wave Path => Node_Path_Wave}/info.json | 2 + .../info.json | 2 + .../Values/{Random => Node_Random}/info.json | 1 + .../info.json | 2 + .../info.json | 2 + .../{Statistic => Node_Statistic}/info.json | 1 + .../Values/{Text => Node_String}/info.json | 1 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 1 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 1 + .../{Trim Text => Node_String_Trim}/info.json | 2 + .../Values/{Struct => Node_Struct}/info.json | 1 + .../{Struct Get => Node_Struct_Get}/info.json | 1 + .../info.json | 2 + .../{Struct Set => Node_Struct_Set}/info.json | 1 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../{To Number => Node_To_Number}/info.json | 2 + .../{To Text => Node_To_Text}/info.json | 2 + .../info.json | 2 + .../{Trigger => Node_Trigger}/info.json | 2 + .../info.json | 2 + .../{Unicode => Node_Unicode}/info.json | 1 + .../{Vector2 => Node_Vector2}/info.json | 1 + .../{Vector3 => Node_Vector3}/info.json | 1 + .../{Vector4 => Node_Vector4}/info.json | 1 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 2 + .../info.json | 1 + .../info.json | 2 + .../Internal/pb_Array/Node_Array/info.json | 11 + .../pb_Array/Node_Array_Get/info.json | 14 + .../pb_Array/Node_Array_Insert/info.json | 15 + .../pb_Array/Node_Array_Remove/info.json | 17 + .../pb_Array/Node_Array_Set/info.json | 15 + .../pb_Box/Node_PB_Box_Contract/info.json | 9 + .../pb_Box/Node_PB_Box_Divide/info.json | 9 + .../pb_Box/Node_PB_Box_Divide_Grid/info.json | 9 + .../pb_Box/Node_PB_Box_Inset/info.json | 9 + .../pb_Box/Node_PB_Box_Mirror/info.json | 9 + .../pb_Box/Node_PB_Box_Split/info.json | 9 + .../pb_Box/Node_PB_Box_Transform/info.json | 9 + .../Internal/pb_Box/Node_PB_Layer/info.json | 9 + .../pb_Draw/Node_PB_Draw_Angle/info.json | 9 + .../pb_Draw/Node_PB_Draw_Blob/info.json | 9 + .../pb_Draw/Node_PB_Draw_Diamond/info.json | 9 + .../pb_Draw/Node_PB_Draw_Ellipse/info.json | 9 + .../pb_Draw/Node_PB_Draw_Fill/info.json | 9 + .../pb_Draw/Node_PB_Draw_Line/info.json | 9 + .../pb_Draw/Node_PB_Draw_Rectangle/info.json | 9 + .../Node_PB_Draw_Round_Rectangle/info.json | 9 + .../Node_PB_Draw_Semi_Ellipse/info.json | 9 + .../pb_Draw/Node_PB_Draw_Trapezoid/info.json | 9 + .../pb_Effects/Node_PB_Fx_Add/info.json | 9 + .../pb_Effects/Node_PB_Fx_Brick/info.json | 9 + .../pb_Effects/Node_PB_Fx_Hash/info.json | 9 + .../pb_Effects/Node_PB_Fx_Highlight/info.json | 9 + .../pb_Effects/Node_PB_Fx_Intersect/info.json | 9 + .../pb_Effects/Node_PB_Fx_Outline/info.json | 9 + .../pb_Effects/Node_PB_Fx_Radial/info.json | 9 + .../pb_Effects/Node_PB_Fx_Shading/info.json | 9 + .../pb_Effects/Node_PB_Fx_Stack/info.json | 9 + .../pb_Effects/Node_PB_Fx_Strip/info.json | 9 + .../pb_Effects/Node_PB_Fx_Subtract/info.json | 9 + .../pb_Group/Node_Group_Input/info.json | 17 + .../pb_Group/Node_Group_Output/info.json | 17 + .../Node_PCX_Condition/info.json | 9 + .../Node_PCX_Array_Get/info.json | 9 + .../Node_PCX_Array_Set/info.json | 9 + .../pcx_Functions/Node_PCX_Equation/info.json | 9 + .../pcx_Functions/Node_PCX_fn_Math/info.json | 9 + .../Node_PCX_fn_Random/info.json | 9 + .../Node_PCX_fn_Surface_Height/info.json | 9 + .../Node_PCX_fn_Surface_Width/info.json | 9 + .../pcx_Variable/Node_PCX_fn_var/info.json | 9 + .../pcx_Variable/Node_PCX_var/info.json | 9 + datafiles/data/{ => Nodes}/Tooltip.zip | Bin .../{ => Nodes}/Tooltip/Node_2D_light.png | Bin .../data/{ => Nodes}/Tooltip/Node_9Slice.png | Bin .../{ => Nodes}/Tooltip/Node_Alpha_Cutoff.png | Bin .../{ => Nodes}/Tooltip/Node_Alpha_Grey.png | Bin .../data/{ => Nodes}/Tooltip/Node_Atlas.png | Bin .../data/{ => Nodes}/Tooltip/Node_Average.png | Bin .../data/{ => Nodes}/Tooltip/Node_BW.png | Bin .../data/{ => Nodes}/Tooltip/Node_Bend.png | Bin .../data/{ => Nodes}/Tooltip/Node_Bevel.png | Bin .../data/{ => Nodes}/Tooltip/Node_Blend.png | Bin .../{ => Nodes}/Tooltip/Node_Blend_Edge.png | Bin .../data/{ => Nodes}/Tooltip/Node_Blobify.png | Bin .../data/{ => Nodes}/Tooltip/Node_Bloom.png | Bin .../data/{ => Nodes}/Tooltip/Node_Blur.png | Bin .../{ => Nodes}/Tooltip/Node_Blur_Bokeh.png | Bin .../Tooltip/Node_Blur_Contrast.png | Bin .../Tooltip/Node_Blur_Directional.png | Bin .../{ => Nodes}/Tooltip/Node_Blur_Path.png | Bin .../{ => Nodes}/Tooltip/Node_Blur_Radial.png | Bin .../{ => Nodes}/Tooltip/Node_Blur_Shape.png | Bin .../{ => Nodes}/Tooltip/Node_Blur_Simple.png | Bin .../{ => Nodes}/Tooltip/Node_Blur_Slope.png | Bin .../{ => Nodes}/Tooltip/Node_Blur_Zoom.png | Bin .../{ => Nodes}/Tooltip/Node_Box_Pattern.png | Bin .../{ => Nodes}/Tooltip/Node_Brush_Linear.png | Bin .../data/{ => Nodes}/Tooltip/Node_Camera.png | Bin .../data/{ => Nodes}/Tooltip/Node_Canvas.png | Bin .../data/{ => Nodes}/Tooltip/Node_Caustic.png | Bin .../{ => Nodes}/Tooltip/Node_Cellular.png | Bin .../data/{ => Nodes}/Tooltip/Node_Checker.png | Bin .../Tooltip/Node_Chromatic_Aberration.png | Bin .../{ => Nodes}/Tooltip/Node_Color_Remove.png | Bin .../{ => Nodes}/Tooltip/Node_Color_adjust.png | Bin .../Tooltip/Node_Color_replace.png | Bin .../{ => Nodes}/Tooltip/Node_Colorize.png | Bin .../Tooltip/Node_Colors_Replace.png | Bin .../{ => Nodes}/Tooltip/Node_Combine_HSV.png | Bin .../{ => Nodes}/Tooltip/Node_Combine_RGB.png | Bin .../{ => Nodes}/Tooltip/Node_Composite.png | Bin .../{ => Nodes}/Tooltip/Node_Convolution.png | Bin .../data/{ => Nodes}/Tooltip/Node_Corner.png | Bin .../data/{ => Nodes}/Tooltip/Node_Crop.png | Bin .../{ => Nodes}/Tooltip/Node_Crop_Content.png | Bin .../data/{ => Nodes}/Tooltip/Node_Curve.png | Bin .../{ => Nodes}/Tooltip/Node_Curve_HSV.png | Bin .../data/{ => Nodes}/Tooltip/Node_Diffuse.png | Bin .../data/{ => Nodes}/Tooltip/Node_Dilate.png | Bin .../{ => Nodes}/Tooltip/Node_Displace.png | Bin .../data/{ => Nodes}/Tooltip/Node_Dither.png | Bin .../{ => Nodes}/Tooltip/Node_Edge_Detect.png | Bin .../data/{ => Nodes}/Tooltip/Node_Erode.png | Bin .../data/{ => Nodes}/Tooltip/Node_Export.png | Bin .../Tooltip/Node_FLIP_Group_Inline.png | Bin .../data/{ => Nodes}/Tooltip/Node_FXAA.png | Bin .../data/{ => Nodes}/Tooltip/Node_Flip.png | Bin .../{ => Nodes}/Tooltip/Node_Flood_Fill.png | Bin .../{ => Nodes}/Tooltip/Node_Flow_Noise.png | Bin .../{ => Nodes}/Tooltip/Node_Fold_Noise.png | Bin .../{ => Nodes}/Tooltip/Node_Gabor_Noise.png | Bin .../{ => Nodes}/Tooltip/Node_Gamma_Map.png | Bin .../data/{ => Nodes}/Tooltip/Node_Glow.png | Bin .../{ => Nodes}/Tooltip/Node_Gradient.png | Bin .../Tooltip/Node_Gradient_Points.png | Bin .../data/{ => Nodes}/Tooltip/Node_Grain.png | Bin .../{ => Nodes}/Tooltip/Node_Grey_Alpha.png | Bin .../{ => Nodes}/Tooltip/Node_Greyscale.png | Bin .../data/{ => Nodes}/Tooltip/Node_Grid.png | Bin .../{ => Nodes}/Tooltip/Node_Grid_Hex.png | Bin .../Tooltip/Node_Grid_Pentagonal.png | Bin .../{ => Nodes}/Tooltip/Node_Grid_Tri.png | Bin .../{ => Nodes}/Tooltip/Node_HSV_Channel.png | Bin .../Tooltip/Node_Herringbone_Tile.png | Bin .../Tooltip/Node_Honeycomb_Noise.png | Bin .../data/{ => Nodes}/Tooltip/Node_Image.png | Bin .../Tooltip/Node_Image_Animated.png | Bin .../Tooltip/Node_Image_Sequence.png | Bin .../{ => Nodes}/Tooltip/Node_Image_Sheet.png | Bin .../{ => Nodes}/Tooltip/Node_Image_gif.png | Bin .../{ => Nodes}/Tooltip/Node_Interlaced.png | Bin .../Tooltip/Node_Interpret_Number.png | Bin .../data/{ => Nodes}/Tooltip/Node_Invert.png | Bin .../data/{ => Nodes}/Tooltip/Node_JPEG.png | Bin .../{ => Nodes}/Tooltip/Node_Kuwahara.png | Bin .../data/{ => Nodes}/Tooltip/Node_Level.png | Bin .../Tooltip/Node_Level_Selector.png | Bin .../data/{ => Nodes}/Tooltip/Node_Line.png | Bin .../Tooltip/Node_Local_Analyze.png | Bin .../{ => Nodes}/Tooltip/Node_MK_Blinker.png | Bin .../{ => Nodes}/Tooltip/Node_MK_Brownian.png | Bin .../Tooltip/Node_MK_Delay_Machine.png | Bin .../data/{ => Nodes}/Tooltip/Node_MK_Fall.png | Bin .../data/{ => Nodes}/Tooltip/Node_MK_Flag.png | Bin .../{ => Nodes}/Tooltip/Node_MK_Flare.png | Bin .../{ => Nodes}/Tooltip/Node_MK_Fracture.png | Bin .../{ => Nodes}/Tooltip/Node_MK_GridBalls.png | Bin .../{ => Nodes}/Tooltip/Node_MK_GridFlip.png | Bin .../data/{ => Nodes}/Tooltip/Node_MK_Rain.png | Bin .../{ => Nodes}/Tooltip/Node_MK_Saber.png | Bin .../data/{ => Nodes}/Tooltip/Node_MK_Tile.png | Bin .../{ => Nodes}/Tooltip/Node_Mesh_Warp.png | Bin .../data/{ => Nodes}/Tooltip/Node_Mirror.png | Bin .../Tooltip/Node_Morph_Surface.png | Bin .../data/{ => Nodes}/Tooltip/Node_Noise.png | Bin .../{ => Nodes}/Tooltip/Node_Noise_Aniso.png | Bin .../{ => Nodes}/Tooltip/Node_Noise_Bubble.png | Bin .../Tooltip/Node_Noise_Cristal.png | Bin .../Tooltip/Node_Noise_Simplex.png | Bin .../{ => Nodes}/Tooltip/Node_Noise_Strand.png | Bin .../data/{ => Nodes}/Tooltip/Node_Normal.png | Bin .../{ => Nodes}/Tooltip/Node_Normal_Light.png | Bin .../{ => Nodes}/Tooltip/Node_Normalize.png | Bin .../data/{ => Nodes}/Tooltip/Node_Outline.png | Bin .../Tooltip/Node_Override_Channel.png | Bin .../data/{ => Nodes}/Tooltip/Node_Padding.png | Bin .../Tooltip/Node_Palette_Shift.png | Bin .../{ => Nodes}/Tooltip/Node_Particle.png | Bin .../{ => Nodes}/Tooltip/Node_Path_Profile.png | Bin .../data/{ => Nodes}/Tooltip/Node_Perlin.png | Bin .../{ => Nodes}/Tooltip/Node_Perlin_Extra.png | Bin .../{ => Nodes}/Tooltip/Node_Pixel_Cloud.png | Bin .../Tooltip/Node_Pixel_Sampler.png | Bin .../{ => Nodes}/Tooltip/Node_Pixel_Sort.png | Bin .../{ => Nodes}/Tooltip/Node_Plot_Linear.png | Bin .../data/{ => Nodes}/Tooltip/Node_Polar.png | Bin .../{ => Nodes}/Tooltip/Node_Posterize.png | Bin .../Tooltip/Node_Pytagorean_Tile.png | Bin .../{ => Nodes}/Tooltip/Node_Quasicrystal.png | Bin .../data/{ => Nodes}/Tooltip/Node_RD.png | Bin .../{ => Nodes}/Tooltip/Node_RGB_Channel.png | Bin .../{ => Nodes}/Tooltip/Node_Random_Tile.png | Bin .../{ => Nodes}/Tooltip/Node_Region_Fill.png | Bin .../Tooltip/Node_Render_Sprite_Sheet.png | Bin .../data/{ => Nodes}/Tooltip/Node_Repeat.png | Bin .../Tooltip/Node_Repeat_Texture.png | Bin .../Tooltip/Node_Rigid_Group_Inline.png | Bin .../data/{ => Nodes}/Tooltip/Node_SDF.png | Bin .../data/{ => Nodes}/Tooltip/Node_Scale.png | Bin .../{ => Nodes}/Tooltip/Node_Scale_Algo.png | Bin .../data/{ => Nodes}/Tooltip/Node_Scatter.png | Bin .../Tooltip/Node_Sequence_Anim.png | Bin .../data/{ => Nodes}/Tooltip/Node_Shadow.png | Bin .../{ => Nodes}/Tooltip/Node_Shadow_Cast.png | Bin .../data/{ => Nodes}/Tooltip/Node_Shape.png | Bin .../{ => Nodes}/Tooltip/Node_Shape_Map.png | Bin .../Tooltip/Node_Shape_Polygon.png | Bin .../{ => Nodes}/Tooltip/Node_Shard_Noise.png | Bin .../data/{ => Nodes}/Tooltip/Node_Skew.png | Bin .../data/{ => Nodes}/Tooltip/Node_Smear.png | Bin .../Tooltip/Node_Smoke_Group_Inline.png | Bin .../data/{ => Nodes}/Tooltip/Node_Solid.png | Bin .../{ => Nodes}/Tooltip/Node_Spherize.png | Bin .../{ => Nodes}/Tooltip/Node_Sprite_Stack.png | Bin .../data/{ => Nodes}/Tooltip/Node_Stack.png | Bin .../Tooltip/Node_Strand_Group_Inline.png | Bin .../data/{ => Nodes}/Tooltip/Node_Stripe.png | Bin .../data/{ => Nodes}/Tooltip/Node_Text.png | Bin .../Tooltip/Node_Texture_Remap.png | Bin .../{ => Nodes}/Tooltip/Node_Threshold.png | Bin .../{ => Nodes}/Tooltip/Node_Tile_Random.png | Bin .../{ => Nodes}/Tooltip/Node_Time_Remap.png | Bin .../{ => Nodes}/Tooltip/Node_Tonemap_ACE.png | Bin .../data/{ => Nodes}/Tooltip/Node_Trail.png | Bin .../{ => Nodes}/Tooltip/Node_Transform.png | Bin .../data/{ => Nodes}/Tooltip/Node_Twirl.png | Bin .../Tooltip/Node_VFX_Group_Inline.png | Bin .../{ => Nodes}/Tooltip/Node_Vignette.png | Bin .../Tooltip/Node_Voronoi_Extra.png | Bin .../data/{ => Nodes}/Tooltip/Node_Warp.png | Bin .../Tooltip/Node_Wavelet_Noise.png | Bin .../data/{ => Nodes}/Tooltip/Node_Zigzag.png | Bin datafiles/data/Nodes/display_data.json | 1023 +++++++++ datafiles/data/Nodes/generator.ipynb | 18 - datafiles/data/{ => Nodes}/related_node.json | 0 datafiles/data/nodes.json | 1 - objects/o_dialog_add_image/Create_0.gml | 6 +- .../o_dialog_add_multiple_images/Create_0.gml | 10 +- objects/o_dialog_add_node/Create_0.gml | 14 +- scripts/__node_custom/__node_custom.gml | 3 - scripts/action_loader/action_loader.gml | 13 - .../node_action_object/node_action_object.gml | 300 +-- scripts/node_guide/node_guide.gml | 59 +- scripts/node_registry/node_registry.gml | 1853 ++--------------- scripts/panel_collection/panel_collection.gml | 4 +- scripts/panel_inspector/panel_inspector.gml | 2 +- .../panel_node_data_gen.gml | 10 +- scripts/panel_nodes/panel_nodes.gml | 2 +- scripts/testing_script/testing_script.gml | 20 +- 859 files changed, 3206 insertions(+), 2493 deletions(-) delete mode 100644 datafiles/data/Nodes.zip rename datafiles/data/{ => Nodes}/Actions.zip (100%) rename datafiles/data/{ => Nodes}/Actions/Nodes/Armature Build.json (100%) rename datafiles/data/{ => Nodes}/Actions/Nodes/Armature Build.png (100%) rename datafiles/data/{ => Nodes}/Actions/Nodes/Create Tilemap.json (100%) rename datafiles/data/{ => Nodes}/Actions/Nodes/Create Tilemap.png (100%) rename datafiles/data/{ => Nodes}/Actions/Nodes/Follow Path.json (100%) rename datafiles/data/{ => Nodes}/Actions/Nodes/Follow Path.png (100%) rename datafiles/data/{ => Nodes}/Actions/Nodes/Iso cube.json (100%) rename datafiles/data/{ => Nodes}/Actions/Nodes/Iso cube.png (100%) rename datafiles/data/{ => Nodes}/Actions/Nodes/Line from Path.json (100%) rename datafiles/data/{ => Nodes}/Actions/Nodes/Line from Path.png (100%) rename datafiles/data/{ => Nodes}/Actions/Nodes/Pixel iso cube.json (100%) rename datafiles/data/{ => Nodes}/Actions/Nodes/Pixel iso cube.png (100%) rename datafiles/data/{ => Nodes}/Actions/icons.afdesign (100%) create mode 100644 datafiles/data/Nodes/Internal.zip rename datafiles/data/Nodes/Internal/3D/{3D Camera => Node_3D_Camera}/info.json (75%) rename datafiles/data/Nodes/Internal/3D/{3D Camera Set => Node_3D_Camera_Set}/info.json (75%) rename datafiles/data/Nodes/Internal/3D/{3D Displace => Node_3D_Displace}/info.json (71%) rename datafiles/data/Nodes/Internal/3D/{Directional Light => Node_3D_Light_Directional}/info.json (72%) rename datafiles/data/Nodes/Internal/3D/{Point Light => Node_3D_Light_Point}/info.json (72%) rename datafiles/data/Nodes/Internal/3D/{3D Material => Node_3D_Material}/info.json (74%) rename datafiles/data/Nodes/Internal/3D/{3D Cone => Node_3D_Mesh_Cone}/info.json (67%) rename datafiles/data/Nodes/Internal/3D/{3D Cube => Node_3D_Mesh_Cube}/info.json (68%) rename datafiles/data/Nodes/Internal/3D/{3D Cylinder => Node_3D_Mesh_Cylinder}/info.json (68%) rename datafiles/data/Nodes/Internal/3D/{Mesh Export => Node_3D_Mesh_Export}/info.json (69%) rename datafiles/data/Nodes/Internal/3D/{Surface Extrude => Node_3D_Mesh_Extrude}/info.json (72%) rename datafiles/data/Nodes/Internal/3D/{3D Object => Node_3D_Mesh_Obj}/info.json (76%) rename datafiles/data/Nodes/Internal/3D/{Path Extrude => Node_3D_Mesh_Path_Extrude}/info.json (70%) rename datafiles/data/Nodes/Internal/3D/{3D Plane => Node_3D_Mesh_Plane}/info.json (70%) rename datafiles/data/Nodes/Internal/3D/{3D Icosphere => Node_3D_Mesh_Sphere_Ico}/info.json (68%) rename datafiles/data/Nodes/Internal/3D/{3D UV Sphere => Node_3D_Mesh_Sphere_UV}/info.json (68%) rename datafiles/data/Nodes/Internal/3D/{Slice Stack => Node_3D_Mesh_Stack_Slice}/info.json (70%) rename datafiles/data/Nodes/Internal/3D/{3D Terrain => Node_3D_Mesh_Terrain}/info.json (72%) rename datafiles/data/Nodes/Internal/3D/{3D Torus => Node_3D_Mesh_Torus}/info.json (67%) rename datafiles/data/Nodes/Internal/3D/{3D Wall Builder => Node_3D_Mesh_Wall_Builder}/info.json (71%) rename datafiles/data/Nodes/Internal/3D/{Point Affector => Node_3D_Point_Affector}/info.json (75%) rename datafiles/data/Nodes/Internal/3D/{3D Repeat => Node_3D_Repeat}/info.json (72%) rename datafiles/data/Nodes/Internal/3D/{Discretize vertex => Node_3D_Round_Vertex}/info.json (72%) rename datafiles/data/Nodes/Internal/3D/{3D Scene => Node_3D_Scene}/info.json (73%) rename datafiles/data/Nodes/Internal/3D/{Set Material => Node_3D_Set_Material}/info.json (70%) rename datafiles/data/Nodes/Internal/3D/{3D Subdivide => Node_3D_Subdivide}/info.json (69%) rename datafiles/data/Nodes/Internal/3D/{Transform => Node_3D_Transform}/info.json (68%) rename datafiles/data/Nodes/Internal/3D/{Transform 3D => Node_3D_Transform_Image}/info.json (73%) rename datafiles/data/Nodes/Internal/3D/{Transform Scene => Node_3D_Transform_Scene}/info.json (74%) rename datafiles/data/Nodes/Internal/3D/{UV Remap => Node_3D_UV_Remap}/info.json (69%) rename datafiles/data/Nodes/Internal/3D/{Ambient Occlusion => Node_Ambient_Occlusion}/info.json (83%) rename datafiles/data/Nodes/Internal/3D/{Bevel => Node_Bevel}/info.json (83%) rename datafiles/data/Nodes/Internal/3D/{Normal => Node_Normal}/info.json (85%) rename datafiles/data/Nodes/Internal/3D/{Normal Light => Node_Normal_Light}/info.json (82%) rename datafiles/data/Nodes/Internal/3D/{RM Cloud => Node_RM_Cloud}/info.json (83%) rename datafiles/data/Nodes/Internal/3D/{RM Combine => Node_RM_Combine}/info.json (78%) rename datafiles/data/Nodes/Internal/3D/{RM Primitive => Node_RM_Primitive}/info.json (89%) rename datafiles/data/Nodes/Internal/3D/{RM Render => Node_RM_Render}/info.json (74%) rename datafiles/data/Nodes/Internal/3D/{RM Terrain => Node_RM_Terrain}/info.json (76%) rename datafiles/data/Nodes/Internal/3D/{Sprite Stack => Node_Sprite_Stack}/info.json (86%) rename datafiles/data/Nodes/Internal/Animation/{Evaluate Curve => Node_Anim_Curve}/info.json (83%) rename datafiles/data/Nodes/Internal/Animation/{Audio Volume => Node_Audio_Loudness}/info.json (73%) rename datafiles/data/Nodes/Internal/Animation/{Audio Window => Node_Audio_Window}/info.json (76%) rename datafiles/data/Nodes/Internal/Animation/{Frame Index => Node_Counter}/info.json (89%) rename datafiles/data/Nodes/Internal/Animation/{Delay => Node_Delay}/info.json (73%) rename datafiles/data/Nodes/Internal/{Values/FFT => Animation/Node_FFT}/info.json (81%) rename datafiles/data/Nodes/Internal/Animation/{Ease => Node_Fn_Ease}/info.json (68%) rename datafiles/data/Nodes/Internal/Animation/{Math => Node_Fn_Math}/info.json (71%) rename datafiles/data/Nodes/Internal/Animation/{SmoothStep => Node_Fn_SmoothStep}/info.json (70%) rename datafiles/data/Nodes/Internal/Animation/{WaveTable => Node_Fn_WaveTable}/info.json (72%) rename datafiles/data/Nodes/Internal/{Generate/Draw Bar Graph => Animation/Node_Plot_Linear}/info.json (84%) rename datafiles/data/Nodes/Internal/Animation/{Rate Remap => Node_Rate_Remap}/info.json (71%) rename datafiles/data/Nodes/Internal/Animation/{Reverse => Node_Revert}/info.json (73%) rename datafiles/data/Nodes/Internal/Animation/{Stagger => Node_Stagger}/info.json (72%) rename datafiles/data/Nodes/Internal/{IO/WAV File In => Animation/Node_WAV_File_Read}/info.json (78%) rename datafiles/data/Nodes/Internal/Animation/{WAV File Out => Node_WAV_File_Write}/info.json (74%) rename datafiles/data/Nodes/Internal/Animation/{Wiggler => Node_Wiggler}/info.json (84%) rename datafiles/data/Nodes/Internal/Color/{Color => Node_Color}/info.json (79%) rename datafiles/data/Nodes/Internal/Color/{Color Data => Node_Color_Data}/info.json (89%) rename datafiles/data/Nodes/Internal/Color/{HSV Color => Node_Color_HSV}/info.json (81%) rename datafiles/data/Nodes/Internal/Color/{Mix Color => Node_Color_Mix}/info.json (69%) rename datafiles/data/Nodes/Internal/Color/{OKLCH Color => Node_Color_OKLCH}/info.json (83%) rename datafiles/data/Nodes/Internal/Color/{RGB Color => Node_Color_RGB}/info.json (81%) rename datafiles/data/Nodes/Internal/Color/{Find pixel => Node_Find_Pixel}/info.json (77%) rename datafiles/data/Nodes/Internal/Color/{Gradient Data => Node_Gradient_Extract}/info.json (73%) rename datafiles/data/Nodes/Internal/Color/{Gradient => Node_Gradient_Out}/info.json (80%) rename datafiles/data/Nodes/Internal/Color/{Palette to Gradient => Node_Gradient_Palette}/info.json (71%) rename datafiles/data/Nodes/Internal/Color/{Gradient Replace => Node_Gradient_Replace_Color}/info.json (70%) rename datafiles/data/Nodes/Internal/Color/{Sample Gradient => Node_Gradient_Sample}/info.json (72%) rename datafiles/data/Nodes/Internal/Color/{Gradient Shift => Node_Gradient_Shift}/info.json (79%) rename datafiles/data/Nodes/Internal/Color/{Palette => Node_Palette}/info.json (86%) rename datafiles/data/Nodes/Internal/Color/{Palette Extract => Node_Palette_Extract}/info.json (70%) rename datafiles/data/Nodes/Internal/Color/{Palette Replace => Node_Palette_Replace}/info.json (72%) rename datafiles/data/Nodes/Internal/Color/{Shrink Palette => Node_Palette_Shrink}/info.json (72%) rename datafiles/data/Nodes/Internal/Color/{Sort Palette => Node_Palette_Sort}/info.json (71%) rename datafiles/data/Nodes/Internal/Color/{Sampler => Node_Sampler}/info.json (83%) rename datafiles/data/Nodes/Internal/Compose/{Armature Create => Node_Armature}/info.json (77%) rename datafiles/data/Nodes/Internal/Compose/{Armature Bind => Node_Armature_Bind}/info.json (77%) rename datafiles/data/Nodes/Internal/Compose/{Armature Mesh Rig => Node_Armature_Mesh_Rig}/info.json (75%) rename datafiles/data/Nodes/Internal/Compose/{Armature Path => Node_Armature_Path}/info.json (76%) rename datafiles/data/Nodes/Internal/Compose/{Armature Pose => Node_Armature_Pose}/info.json (75%) rename datafiles/data/Nodes/Internal/Compose/{Armature Sample => Node_Armature_Sample}/info.json (76%) rename datafiles/data/Nodes/Internal/Compose/{Blend => Node_Blend}/info.json (96%) rename datafiles/data/Nodes/Internal/Compose/{Camera => Node_Camera}/info.json (89%) rename datafiles/data/Nodes/Internal/Compose/{Composite => Node_Composite}/info.json (87%) rename datafiles/data/Nodes/Internal/{IO/Export => Compose/Node_Export}/info.json (87%) rename datafiles/data/Nodes/Internal/Compose/{Image Grid => Node_Image_Grid}/info.json (73%) rename datafiles/data/Nodes/Internal/Compose/{Pack Sprites => Node_Pack_Sprites}/info.json (76%) rename datafiles/data/Nodes/Internal/Compose/{Render Spritesheet => Node_Render_Sprite_Sheet}/info.json (81%) rename datafiles/data/Nodes/Internal/Compose/{Stack => Node_Stack}/info.json (76%) create mode 100644 datafiles/data/Nodes/Internal/Custom/Node_Custom/info.json rename datafiles/data/Nodes/Internal/Extra/{Ambient Occlusion => Node_Ambient_Occlusion}/info.json (83%) rename datafiles/data/Nodes/Internal/Extra/{Brush => Node_Brush_Linear}/info.json (79%) rename datafiles/data/Nodes/Internal/Extra/{Caustic => Node_Caustic}/info.json (81%) rename datafiles/data/Nodes/Internal/Extra/{Flow Noise => Node_Flow_Noise}/info.json (81%) rename datafiles/data/Nodes/Internal/Extra/{Gabor Noise => Node_Gabor_Noise}/info.json (80%) rename datafiles/data/Nodes/Internal/Extra/{Pentagonal Grid => Node_Grid_Pentagonal}/info.json (80%) rename datafiles/data/Nodes/Internal/Extra/{Herringbone Tile => Node_Herringbone_Tile}/info.json (80%) rename datafiles/data/Nodes/Internal/Extra/{Honeycomb Noise => Node_Honeycomb_Noise}/info.json (79%) rename datafiles/data/Nodes/Internal/Extra/{MK Fracture => Node_MK_Fracture}/info.json (84%) rename datafiles/data/Nodes/Internal/Extra/{MK Sparkle => Node_MK_Sparkle}/info.json (81%) rename datafiles/data/Nodes/Internal/Extra/{Bubble Noise => Node_Noise_Bubble}/info.json (80%) rename datafiles/data/Nodes/Internal/Extra/{Cristal Noise => Node_Noise_Cristal}/info.json (80%) rename datafiles/data/Nodes/Internal/Extra/{Extra Perlins => Node_Perlin_Extra}/info.json (85%) rename datafiles/data/Nodes/Internal/Extra/{Pytagorean Tile => Node_Pytagorean_Tile}/info.json (80%) rename datafiles/data/Nodes/Internal/Extra/{RM Cloud => Node_RM_Cloud}/info.json (83%) rename datafiles/data/Nodes/Internal/Extra/{Random Tile => Node_Random_Tile}/info.json (81%) rename datafiles/data/Nodes/Internal/Extra/{Shard Noise => Node_Shard_Noise}/info.json (82%) rename datafiles/data/Nodes/Internal/Extra/{Extra Voronoi => Node_Voronoi_Extra}/info.json (85%) rename datafiles/data/Nodes/Internal/Extra/{Wavelet Noise => Node_Wavelet_Noise}/info.json (80%) rename datafiles/data/Nodes/Internal/FLIP Fluid/{Add Collider => Node_FLIP_Apply_Force}/info.json (51%) rename datafiles/data/Nodes/Internal/FLIP Fluid/{Apply Velocity => Node_FLIP_Apply_Velocity}/info.json (52%) rename datafiles/data/Nodes/Internal/FLIP Fluid/{Destroy => Node_FLIP_Destroy}/info.json (50%) rename datafiles/data/Nodes/Internal/FLIP Fluid/{Domain => Node_FLIP_Domain}/info.json (50%) rename datafiles/data/Nodes/Internal/FLIP Fluid/{Render => Node_FLIP_Render}/info.json (54%) rename datafiles/data/Nodes/Internal/FLIP Fluid/{Repel => Node_FLIP_Repel}/info.json (50%) rename datafiles/data/Nodes/Internal/FLIP Fluid/{Spawner => Node_FLIP_Spawner}/info.json (50%) rename datafiles/data/Nodes/Internal/FLIP Fluid/{Update => Node_FLIP_Update}/info.json (50%) rename datafiles/data/Nodes/Internal/FLIP Fluid/{Vortex => Node_FLIP_Vortex}/info.json (50%) rename datafiles/data/Nodes/Internal/FLIP Fluid/{FLIP to VFX => Node_FLIP_to_VFX}/info.json (58%) delete mode 100644 datafiles/data/Nodes/Internal/Feedback/Input/info.json create mode 100644 datafiles/data/Nodes/Internal/Feedback/Node_Feedback_Input/info.json create mode 100644 datafiles/data/Nodes/Internal/Feedback/Node_Feedback_Output/info.json rename datafiles/data/Nodes/Internal/{Filter/Thumbnail => Feedback/Node_Group_Thumbnail}/info.json (61%) delete mode 100644 datafiles/data/Nodes/Internal/Feedback/Output/info.json rename datafiles/data/Nodes/Internal/Filter/{2D Light => Node_2D_light}/info.json (83%) rename datafiles/data/Nodes/Internal/Filter/{Alpha Cutoff => Node_Alpha_Cutoff}/info.json (84%) rename datafiles/data/Nodes/Internal/Filter/{Alpha to Grey => Node_Alpha_Grey}/info.json (86%) rename datafiles/data/Nodes/Internal/Filter/{Pixel Expand => Node_Atlas}/info.json (88%) rename datafiles/data/Nodes/Internal/Filter/{Average => Node_Average}/info.json (73%) rename datafiles/data/Nodes/Internal/Filter/{BW => Node_BW}/info.json (88%) rename datafiles/data/Nodes/Internal/Filter/{Blend => Node_Blend}/info.json (96%) rename datafiles/data/Nodes/Internal/Filter/{Blend Edge => Node_Blend_Edge}/info.json (74%) rename datafiles/data/Nodes/Internal/Filter/{Blobify => Node_Blobify}/info.json (75%) rename datafiles/data/Nodes/Internal/Filter/{Bloom => Node_Bloom}/info.json (87%) rename datafiles/data/Nodes/Internal/Filter/{Blur => Node_Blur}/info.json (86%) rename datafiles/data/Nodes/Internal/Filter/{Lens Blur => Node_Blur_Bokeh}/info.json (78%) rename datafiles/data/Nodes/Internal/Filter/{Box Blur => Node_Blur_Box}/info.json (71%) rename datafiles/data/Nodes/Internal/Filter/{Contrast Blur => Node_Blur_Contrast}/info.json (81%) rename datafiles/data/Nodes/Internal/Filter/{Directional Blur => Node_Blur_Directional}/info.json (83%) rename datafiles/data/Nodes/Internal/Filter/{Path Blur => Node_Blur_Path}/info.json (69%) rename datafiles/data/Nodes/Internal/Filter/{Radial Blur => Node_Blur_Radial}/info.json (72%) rename datafiles/data/Nodes/Internal/Filter/{Shape Blur => Node_Blur_Shape}/info.json (72%) rename datafiles/data/Nodes/Internal/Filter/{Non-Uniform Blur => Node_Blur_Simple}/info.json (76%) rename datafiles/data/Nodes/Internal/Filter/{Slope Blur => Node_Blur_Slope}/info.json (76%) rename datafiles/data/Nodes/Internal/Filter/{Zoom Blur => Node_Blur_Zoom}/info.json (83%) rename datafiles/data/Nodes/Internal/Filter/{Brush => Node_Brush_Linear}/info.json (79%) rename datafiles/data/Nodes/Internal/Filter/{Chromatic Aberration => Node_Chromatic_Aberration}/info.json (79%) rename datafiles/data/Nodes/Internal/Filter/{Remove Color => Node_Color_Remove}/info.json (84%) rename datafiles/data/Nodes/Internal/Filter/{Separate Color => Node_Color_Separate}/info.json (82%) rename datafiles/data/Nodes/Internal/Filter/{Color Adjust => Node_Color_adjust}/info.json (91%) rename datafiles/data/Nodes/Internal/Filter/{Replace Palette => Node_Color_replace}/info.json (89%) rename datafiles/data/Nodes/Internal/Filter/{Colorize => Node_Colorize}/info.json (87%) rename datafiles/data/Nodes/Internal/Filter/{Replace Colors => Node_Colors_Replace}/info.json (87%) rename datafiles/data/Nodes/Internal/Filter/{HSV Combine => Node_Combine_HSV}/info.json (75%) rename datafiles/data/Nodes/Internal/Filter/{RGBA Combine => Node_Combine_RGB}/info.json (75%) rename datafiles/data/Nodes/Internal/Filter/{Convolution => Node_Convolution}/info.json (78%) rename datafiles/data/Nodes/Internal/Filter/{Round Corner => Node_Corner}/info.json (73%) rename datafiles/data/Nodes/Internal/Filter/{Curve => Node_Curve}/info.json (73%) rename datafiles/data/Nodes/Internal/Filter/{HSV Curve => Node_Curve_HSV}/info.json (72%) rename datafiles/data/Nodes/Internal/Filter/{De-Corner => Node_De_Corner}/info.json (86%) rename datafiles/data/Nodes/Internal/Filter/{De-Stray => Node_De_Stray}/info.json (85%) rename datafiles/data/Nodes/Internal/Filter/{Dilate => Node_Dilate}/info.json (86%) rename datafiles/data/Nodes/Internal/Filter/{Displace => Node_Displace}/info.json (86%) rename datafiles/data/Nodes/Internal/Filter/{Dither => Node_Dither}/info.json (85%) rename datafiles/data/Nodes/Internal/Filter/{Error Diffuse Dither => Node_Dither_Diffuse}/info.json (73%) rename datafiles/data/Nodes/Internal/Filter/{Edge Detect => Node_Edge_Detect}/info.json (84%) rename datafiles/data/Nodes/Internal/Filter/{Erode => Node_Erode}/info.json (85%) rename datafiles/data/Nodes/Internal/Filter/{FXAA => Node_FXAA}/info.json (88%) rename datafiles/data/Nodes/Internal/Filter/{Gamma Map => Node_Gamma_Map}/info.json (76%) rename datafiles/data/Nodes/Internal/Filter/{Glow => Node_Glow}/info.json (84%) rename datafiles/data/Nodes/Internal/Filter/{Grain => Node_Grain}/info.json (71%) rename datafiles/data/Nodes/Internal/Filter/{Grey to Alpha => Node_Grey_Alpha}/info.json (85%) rename datafiles/data/Nodes/Internal/Filter/{Greyscale => Node_Greyscale}/info.json (85%) rename datafiles/data/Nodes/Internal/Filter/{Input => Node_Group_Input}/info.json (66%) rename datafiles/data/Nodes/Internal/{Loop/Output => Filter/Node_Group_Output}/info.json (66%) rename datafiles/data/Nodes/Internal/{Feedback/Thumbnail => Filter/Node_Group_Thumbnail}/info.json (61%) rename datafiles/data/Nodes/Internal/Filter/{HSV Extract => Node_HSV_Channel}/info.json (76%) rename datafiles/data/Nodes/Internal/Filter/{High Pass => Node_High_Pass}/info.json (73%) rename datafiles/data/Nodes/Internal/Filter/{Interlace => Node_Interlaced}/info.json (71%) rename datafiles/data/Nodes/Internal/Filter/{Invert => Node_Invert}/info.json (84%) rename datafiles/data/Nodes/Internal/Filter/{Array Length => Node_Iterator_Each_Length}/info.json (50%) rename datafiles/data/Nodes/Internal/{Loop/Index => Filter/Node_Iterator_Index}/info.json (63%) rename datafiles/data/Nodes/Internal/{Loop/Loop amount => Filter/Node_Iterator_Length}/info.json (55%) rename datafiles/data/Nodes/Internal/Filter/{JPEG => Node_JPEG}/info.json (72%) rename datafiles/data/Nodes/Internal/Filter/{Kuwahara => Node_Kuwahara}/info.json (74%) rename datafiles/data/Nodes/Internal/Filter/{Level => Node_Level}/info.json (86%) rename datafiles/data/Nodes/Internal/Filter/{Level Selector => Node_Level_Selector}/info.json (84%) rename datafiles/data/Nodes/Internal/Filter/{Liquefy => Node_Liquefy}/info.json (71%) rename datafiles/data/Nodes/Internal/Filter/{Local Analyze => Node_Local_Analyze}/info.json (75%) rename datafiles/data/Nodes/Internal/Filter/{Mirror => Node_Mirror}/info.json (75%) rename datafiles/data/Nodes/Internal/Filter/{Polar Mirror => Node_Mirror_Polar}/info.json (77%) rename datafiles/data/Nodes/Internal/Filter/{Morph Surface => Node_Morph_Surface}/info.json (71%) rename datafiles/data/Nodes/Internal/Filter/{Normalize => Node_Normalize}/info.json (76%) rename datafiles/data/Nodes/Internal/Filter/{Outline => Node_Outline}/info.json (85%) rename datafiles/data/Nodes/Internal/Filter/{Override Channel => Node_Override_Channel}/info.json (72%) rename datafiles/data/Nodes/Internal/Filter/{Palette Shift => Node_Palette_Shift}/info.json (71%) rename datafiles/data/Nodes/Internal/Filter/{Pixel Cloud => Node_Pixel_Cloud}/info.json (82%) rename datafiles/data/Nodes/Internal/Filter/{Pixel Math => Node_Pixel_Math}/info.json (89%) rename datafiles/data/Nodes/Internal/Filter/{Pixel Sort => Node_Pixel_Sort}/info.json (84%) rename datafiles/data/Nodes/Internal/Filter/{Posterize => Node_Posterize}/info.json (83%) rename datafiles/data/Nodes/Internal/Filter/{RGBA Extract => Node_RGB_Channel}/info.json (87%) rename datafiles/data/Nodes/Internal/Filter/{SDF => Node_SDF}/info.json (76%) rename datafiles/data/Nodes/Internal/Filter/{Shadow => Node_Shadow}/info.json (83%) rename datafiles/data/Nodes/Internal/Filter/{Cast Shadow => Node_Shadow_Cast}/info.json (75%) rename datafiles/data/Nodes/Internal/Filter/{Shape Map => Node_Shape_Map}/info.json (69%) rename datafiles/data/Nodes/Internal/Filter/{Shuffle => Node_Shuffle}/info.json (72%) rename datafiles/data/Nodes/Internal/Filter/{Smear => Node_Smear}/info.json (73%) rename datafiles/data/Nodes/Internal/Filter/{Spherize => Node_Spherize}/info.json (70%) rename datafiles/data/Nodes/Internal/Filter/{Replace Image => Node_Surface_Replace}/info.json (76%) rename datafiles/data/Nodes/Internal/Filter/{Texture Remap => Node_Texture_Remap}/info.json (86%) rename datafiles/data/Nodes/Internal/Filter/{Threshold => Node_Threshold}/info.json (79%) rename datafiles/data/Nodes/Internal/Filter/{Time Remap => Node_Time_Remap}/info.json (87%) rename datafiles/data/Nodes/Internal/Filter/{ACE => Node_Tonemap_ACE}/info.json (68%) rename datafiles/data/Nodes/Internal/Filter/{Trail => Node_Trail}/info.json (77%) rename datafiles/data/Nodes/Internal/Filter/{Twirl => Node_Twirl}/info.json (86%) rename datafiles/data/Nodes/Internal/Filter/{Vignette => Node_Vignette}/info.json (71%) rename datafiles/data/Nodes/Internal/Generate/{Box Pattern => Node_Box_Pattern}/info.json (70%) rename datafiles/data/Nodes/Internal/Generate/{Caustic => Node_Caustic}/info.json (81%) rename datafiles/data/Nodes/Internal/Generate/{Cellular Noise => Node_Cellular}/info.json (86%) rename datafiles/data/Nodes/Internal/Generate/{Checker => Node_Checker}/info.json (82%) rename datafiles/data/Nodes/Internal/Generate/{Draw Cross Section => Node_Cross_Section}/info.json (75%) rename datafiles/data/Nodes/Internal/Generate/{Diffuse => Node_Diffuse}/info.json (71%) rename datafiles/data/Nodes/Internal/Generate/{FLIP Fluid => Node_FLIP_Group_Inline}/info.json (72%) rename datafiles/data/Nodes/Internal/Generate/{Flood Fill => Node_Flood_Fill}/info.json (73%) rename datafiles/data/Nodes/Internal/Generate/{Flow Noise => Node_Flow_Noise}/info.json (81%) rename datafiles/data/Nodes/Internal/Generate/{Fold Noise => Node_Fold_Noise}/info.json (70%) rename datafiles/data/Nodes/Internal/Generate/{Gabor Noise => Node_Gabor_Noise}/info.json (80%) rename datafiles/data/Nodes/Internal/Generate/{Draw Gradient => Node_Gradient}/info.json (82%) rename datafiles/data/Nodes/Internal/Generate/{Draw 4 Points Gradient => Node_Gradient_Points}/info.json (81%) rename datafiles/data/Nodes/Internal/Generate/{Grid => Node_Grid}/info.json (86%) rename datafiles/data/Nodes/Internal/Generate/{Hexagonal Grid => Node_Grid_Hex}/info.json (83%) rename datafiles/data/Nodes/Internal/Generate/{Pentagonal Grid => Node_Grid_Pentagonal}/info.json (80%) rename datafiles/data/Nodes/Internal/Generate/{Triangular Grid => Node_Grid_Tri}/info.json (83%) rename datafiles/data/Nodes/Internal/Generate/{Herringbone Tile => Node_Herringbone_Tile}/info.json (80%) rename datafiles/data/Nodes/Internal/Generate/{Honeycomb Noise => Node_Honeycomb_Noise}/info.json (79%) rename datafiles/data/Nodes/Internal/Generate/{Interpret Number => Node_Interpret_Number}/info.json (71%) rename datafiles/data/Nodes/Internal/Generate/{Julia => Node_Julia_Set}/info.json (68%) rename datafiles/data/Nodes/Internal/Generate/{Draw Line => Node_Line}/info.json (87%) rename datafiles/data/Nodes/Internal/Generate/{MK Blinker => Node_MK_Blinker}/info.json (73%) rename datafiles/data/Nodes/Internal/Generate/{MK Brownian => Node_MK_Brownian}/info.json (69%) rename datafiles/data/Nodes/Internal/Generate/{MK Delay Machine => Node_MK_Delay_Machine}/info.json (72%) rename datafiles/data/Nodes/Internal/Generate/{MK Fall => Node_MK_Fall}/info.json (76%) rename datafiles/data/Nodes/Internal/Generate/{MK Flag => Node_MK_Flag}/info.json (69%) rename datafiles/data/Nodes/Internal/Generate/{MK Lens Flare => Node_MK_Flare}/info.json (70%) rename datafiles/data/Nodes/Internal/Generate/{MK Fracture => Node_MK_Fracture}/info.json (84%) rename datafiles/data/Nodes/Internal/Generate/{MK GridBalls => Node_MK_GridBalls}/info.json (71%) rename datafiles/data/Nodes/Internal/Generate/{MK GridFlip => Node_MK_GridFlip}/info.json (71%) rename datafiles/data/Nodes/Internal/Generate/{MK Rain => Node_MK_Rain}/info.json (70%) rename datafiles/data/Nodes/Internal/Generate/{MK Saber => Node_MK_Saber}/info.json (72%) rename datafiles/data/Nodes/Internal/Generate/{MK Sparkle => Node_MK_Sparkle}/info.json (81%) rename datafiles/data/Nodes/Internal/Generate/{MK Subpixel => Node_MK_Subpixel}/info.json (72%) rename datafiles/data/Nodes/Internal/Generate/{MK Tile => Node_MK_Tile}/info.json (71%) rename datafiles/data/Nodes/Internal/Generate/{Noise => Node_Noise}/info.json (82%) rename datafiles/data/Nodes/Internal/Generate/{Anisotropic Noise => Node_Noise_Aniso}/info.json (81%) rename datafiles/data/Nodes/Internal/Generate/{Bubble Noise => Node_Noise_Bubble}/info.json (80%) rename datafiles/data/Nodes/Internal/Generate/{Cristal Noise => Node_Noise_Cristal}/info.json (80%) rename datafiles/data/Nodes/Internal/Generate/{Simplex Noise => Node_Noise_Simplex}/info.json (79%) rename datafiles/data/Nodes/Internal/Generate/{Strand Noise => Node_Noise_Strand}/info.json (70%) rename datafiles/data/Nodes/Internal/Generate/{Particle => Node_Particle}/info.json (81%) rename datafiles/data/Nodes/Internal/Generate/{Draw Path Profile => Node_Path_Profile}/info.json (72%) rename datafiles/data/Nodes/Internal/Generate/{Perlin Noise => Node_Perlin}/info.json (82%) rename datafiles/data/Nodes/Internal/Generate/{Extra Perlins => Node_Perlin_Extra}/info.json (85%) rename datafiles/data/Nodes/Internal/Generate/{Pixel Builder => Node_Pixel_Builder}/info.json (73%) rename datafiles/data/Nodes/Internal/Generate/{Pixel Sampler => Node_Pixel_Sampler}/info.json (74%) rename datafiles/data/Nodes/Internal/{Animation/Draw Bar Graph => Generate/Node_Plot_Linear}/info.json (84%) rename datafiles/data/Nodes/Internal/Generate/{Pytagorean Tile => Node_Pytagorean_Tile}/info.json (80%) rename datafiles/data/Nodes/Internal/Generate/{Quasicrystal => Node_Quasicrystal}/info.json (70%) rename datafiles/data/Nodes/Internal/Generate/{Reaction Diffusion => Node_RD}/info.json (68%) rename datafiles/data/Nodes/Internal/Generate/{Draw Random Shape => Node_Random_Shape}/info.json (74%) rename datafiles/data/Nodes/Internal/Generate/{Random Tile => Node_Random_Tile}/info.json (81%) rename datafiles/data/Nodes/Internal/Generate/{Region Fill => Node_Region_Fill}/info.json (71%) rename datafiles/data/Nodes/Internal/Generate/{Repeat => Node_Repeat}/info.json (83%) rename datafiles/data/Nodes/Internal/Generate/{Repeat Texture => Node_Repeat_Texture}/info.json (83%) rename datafiles/data/Nodes/Internal/Generate/{RigidSim => Node_Rigid_Group_Inline}/info.json (75%) rename datafiles/data/Nodes/Internal/Generate/{Scatter => Node_Scatter}/info.json (83%) rename datafiles/data/Nodes/Internal/Generate/{Separate Shape => Node_Seperate_Shape}/info.json (84%) rename datafiles/data/Nodes/Internal/Generate/{Draw Shape => Node_Shape}/info.json (95%) rename datafiles/data/Nodes/Internal/Generate/{Draw Shape Polygon => Node_Shape_Polygon}/info.json (70%) rename datafiles/data/Nodes/Internal/Generate/{Shard Noise => Node_Shard_Noise}/info.json (82%) rename datafiles/data/Nodes/Internal/Generate/{Sky => Node_Sky}/info.json (85%) rename datafiles/data/Nodes/Internal/Generate/{SmokeSim => Node_Smoke_Group_Inline}/info.json (72%) rename datafiles/data/Nodes/Internal/Generate/{Solid => Node_Solid}/info.json (83%) rename datafiles/data/Nodes/Internal/Generate/{StrandSim => Node_Strand_Group_Inline}/info.json (77%) rename datafiles/data/Nodes/Internal/Generate/{Stripe => Node_Stripe}/info.json (82%) rename datafiles/data/Nodes/Internal/Generate/{Draw Text => Node_Text}/info.json (83%) rename datafiles/data/Nodes/Internal/Generate/{Tile Drawer => Node_Tile_Drawer}/info.json (73%) rename datafiles/data/Nodes/Internal/Generate/{VFX => Node_VFX_Group_Inline}/info.json (89%) rename datafiles/data/Nodes/Internal/Generate/{Extra Voronoi => Node_Voronoi_Extra}/info.json (85%) rename datafiles/data/Nodes/Internal/Generate/{Wavelet Noise => Node_Wavelet_Noise}/info.json (80%) rename datafiles/data/Nodes/Internal/Generate/{Zigzag => Node_Zigzag}/info.json (82%) rename datafiles/data/Nodes/Internal/{Loop/Input => Group/Node_Group_Input}/info.json (66%) rename datafiles/data/Nodes/Internal/{Filter/Output => Group/Node_Group_Output}/info.json (66%) rename datafiles/data/Nodes/Internal/Group/{Thumbnail => Node_Group_Thumbnail}/info.json (61%) delete mode 100644 datafiles/data/Nodes/Internal/Hidden/Feedback/info.json delete mode 100644 datafiles/data/Nodes/Internal/Hidden/Filter Input/info.json delete mode 100644 datafiles/data/Nodes/Internal/Hidden/Filter Output/info.json delete mode 100644 datafiles/data/Nodes/Internal/Hidden/Grid Noise/info.json delete mode 100644 datafiles/data/Nodes/Internal/Hidden/Hexagonal Noise/info.json delete mode 100644 datafiles/data/Nodes/Internal/Hidden/Input/info.json delete mode 100644 datafiles/data/Nodes/Internal/Hidden/Loop Array/info.json delete mode 100644 datafiles/data/Nodes/Internal/Hidden/Loop Input/info.json delete mode 100644 datafiles/data/Nodes/Internal/Hidden/Loop Output/info.json delete mode 100644 datafiles/data/Nodes/Internal/Hidden/Loop/info.json create mode 100644 datafiles/data/Nodes/Internal/Hidden/Node_DynaSurf_In/info.json create mode 100644 datafiles/data/Nodes/Internal/Hidden/Node_DynaSurf_Out/info.json create mode 100644 datafiles/data/Nodes/Internal/Hidden/Node_DynaSurf_Out_Height/info.json create mode 100644 datafiles/data/Nodes/Internal/Hidden/Node_DynaSurf_Out_Width/info.json create mode 100644 datafiles/data/Nodes/Internal/Hidden/Node_Feedback_Inline/info.json create mode 100644 datafiles/data/Nodes/Internal/Hidden/Node_Grid_Noise/info.json create mode 100644 datafiles/data/Nodes/Internal/Hidden/Node_Iterate_Each/info.json rename datafiles/data/Nodes/Internal/Hidden/{Filter Array => Node_Iterate_Filter}/info.json (68%) create mode 100644 datafiles/data/Nodes/Internal/Hidden/Node_Iterate_Inline/info.json rename datafiles/data/Nodes/Internal/Hidden/{Sort Array => Node_Iterate_Sort}/info.json (68%) create mode 100644 datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Each_Inline_Input/info.json create mode 100644 datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Each_Inline_Output/info.json create mode 100644 datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Each_Input/info.json create mode 100644 datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Each_Output/info.json create mode 100644 datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Filter_Inline_Input/info.json create mode 100644 datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Filter_Inline_Output/info.json create mode 100644 datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Filter_Input/info.json create mode 100644 datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Filter_Output/info.json create mode 100644 datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Sort_Inline_Input/info.json create mode 100644 datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Sort_Inline_Output/info.json create mode 100644 datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Sort_Input/info.json create mode 100644 datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Sort_Output/info.json create mode 100644 datafiles/data/Nodes/Internal/Hidden/Node_Noise_Hex/info.json create mode 100644 datafiles/data/Nodes/Internal/Hidden/Node_Noise_Tri/info.json create mode 100644 datafiles/data/Nodes/Internal/Hidden/Node_Onion_Skin/info.json rename datafiles/data/Nodes/Internal/Hidden/{RigidSim => Node_Rigid_Group}/info.json (62%) rename datafiles/data/Nodes/Internal/Hidden/{SmokeSim => Node_Smoke_Group}/info.json (60%) rename datafiles/data/Nodes/Internal/Hidden/{StrandSim => Node_Strand_Group}/info.json (61%) create mode 100644 datafiles/data/Nodes/Internal/Hidden/Node_VFX_Group/info.json delete mode 100644 datafiles/data/Nodes/Internal/Hidden/Onion Skin/info.json delete mode 100644 datafiles/data/Nodes/Internal/Hidden/Output/info.json delete mode 100644 datafiles/data/Nodes/Internal/Hidden/Sort Input/info.json delete mode 100644 datafiles/data/Nodes/Internal/Hidden/Sort Output/info.json delete mode 100644 datafiles/data/Nodes/Internal/Hidden/Triangular Noise/info.json delete mode 100644 datafiles/data/Nodes/Internal/Hidden/VFX/info.json delete mode 100644 datafiles/data/Nodes/Internal/Hidden/getHeight/info.json delete mode 100644 datafiles/data/Nodes/Internal/Hidden/getWidth/info.json rename datafiles/data/Nodes/Internal/IO/{ASE File In => Node_ASE_File_Read}/info.json (77%) rename datafiles/data/Nodes/Internal/IO/{ASE Tag => Node_ASE_Tag}/info.json (68%) rename datafiles/data/Nodes/Internal/IO/{ASE Layer => Node_ASE_layer}/info.json (70%) rename datafiles/data/Nodes/Internal/IO/{Active Canvas => Node_Active_Canvas}/info.json (74%) rename datafiles/data/Nodes/Internal/IO/{Byte File In => Node_Byte_File_Read}/info.json (71%) rename datafiles/data/Nodes/Internal/IO/{Byte File Out => Node_Byte_File_Write}/info.json (71%) rename datafiles/data/Nodes/Internal/IO/{CSV File In => Node_CSV_File_Read}/info.json (77%) rename datafiles/data/Nodes/Internal/IO/{CSV File Out => Node_CSV_File_Write}/info.json (76%) rename datafiles/data/Nodes/Internal/IO/{Cache Array => Node_Cache_Array}/info.json (75%) rename datafiles/data/Nodes/Internal/IO/{Canvas => Node_Canvas}/info.json (86%) rename datafiles/data/Nodes/Internal/IO/{Canvas Group => Node_Canvas_Group}/info.json (77%) rename datafiles/data/Nodes/Internal/IO/{Directory Search => Node_Directory_Search}/info.json (75%) rename datafiles/data/Nodes/Internal/{Compose/Export => IO/Node_Export}/info.json (87%) rename datafiles/data/Nodes/Internal/IO/{GMRoom => Node_GMRoom}/info.json (57%) rename datafiles/data/Nodes/Internal/IO/{HTTP => Node_HTTP_request}/info.json (67%) rename datafiles/data/Nodes/Internal/IO/{Image => Node_Image}/info.json (87%) rename datafiles/data/Nodes/Internal/IO/{Animation => Node_Image_Animated}/info.json (85%) rename datafiles/data/Nodes/Internal/IO/{Image Array => Node_Image_Sequence}/info.json (85%) rename datafiles/data/Nodes/Internal/IO/{Splice Spritesheet => Node_Image_Sheet}/info.json (84%) rename datafiles/data/Nodes/Internal/IO/{Image GIF => Node_Image_gif}/info.json (86%) rename datafiles/data/Nodes/Internal/IO/{JSON File In => Node_Json_File_Read}/info.json (71%) rename datafiles/data/Nodes/Internal/IO/{JSON File Out => Node_Json_File_Write}/info.json (71%) rename datafiles/data/Nodes/Internal/IO/{MIDI In => Node_MIDI_In}/info.json (66%) rename datafiles/data/Nodes/Internal/IO/{SVG => Node_SVG}/info.json (82%) rename datafiles/data/Nodes/Internal/IO/{Array to Anim => Node_Sequence_Anim}/info.json (82%) rename datafiles/data/Nodes/Internal/IO/{Spout Sender => Node_Spout_Send}/info.json (70%) rename datafiles/data/Nodes/Internal/IO/{Text File In => Node_Text_File_Read}/info.json (72%) rename datafiles/data/Nodes/Internal/IO/{Text File Out => Node_Text_File_Write}/info.json (73%) rename datafiles/data/Nodes/Internal/IO/{Convert to Tilemap => Node_Tile_Convert}/info.json (71%) rename datafiles/data/Nodes/Internal/IO/{Tile Drawer => Node_Tile_Drawer}/info.json (73%) rename datafiles/data/Nodes/Internal/IO/{Render Tilemap => Node_Tile_Render}/info.json (69%) rename datafiles/data/Nodes/Internal/IO/{Tile Rule => Node_Tile_Rule}/info.json (68%) rename datafiles/data/Nodes/Internal/IO/{Export Tilemap => Node_Tile_Tilemap_Export}/info.json (68%) rename datafiles/data/Nodes/Internal/IO/{Tileset => Node_Tile_Tileset}/info.json (70%) rename datafiles/data/Nodes/Internal/{Animation/WAV File In => IO/Node_WAV_File_Read}/info.json (78%) rename datafiles/data/Nodes/Internal/IO/{WAV File Out => Node_WAV_File_Write}/info.json (74%) rename datafiles/data/Nodes/Internal/IO/{Websocket Receiver => Node_Websocket_Receiver}/info.json (72%) rename datafiles/data/Nodes/Internal/IO/{Websocket Sender => Node_Websocket_Sender}/info.json (71%) rename datafiles/data/Nodes/Internal/IO/{XML File In => Node_XML_File_Read}/info.json (74%) rename datafiles/data/Nodes/Internal/IO/{XML File Out => Node_XML_File_Write}/info.json (71%) delete mode 100644 datafiles/data/Nodes/Internal/Loop/Loop Input/info.json delete mode 100644 datafiles/data/Nodes/Internal/Loop/Loop Output/info.json rename datafiles/data/Nodes/Internal/{Group/Input => Loop/Node_Group_Input}/info.json (66%) rename datafiles/data/Nodes/Internal/{RigidSim/Output => Loop/Node_Group_Output}/info.json (66%) rename datafiles/data/Nodes/Internal/Loop/{Thumbnail => Node_Group_Thumbnail}/info.json (61%) rename datafiles/data/Nodes/Internal/Loop/{Array Length => Node_Iterator_Each_Length}/info.json (50%) rename datafiles/data/Nodes/Internal/{Filter/Index => Loop/Node_Iterator_Index}/info.json (63%) create mode 100644 datafiles/data/Nodes/Internal/Loop/Node_Iterator_Input/info.json rename datafiles/data/Nodes/Internal/{Filter/Loop amount => Loop/Node_Iterator_Length}/info.json (55%) create mode 100644 datafiles/data/Nodes/Internal/Loop/Node_Iterator_Output/info.json rename datafiles/data/Nodes/Internal/Misc/{Animation Control => Node_Animation_Control}/info.json (71%) rename datafiles/data/Nodes/Internal/Misc/{GUI In => Node_Application_In}/info.json (76%) rename datafiles/data/Nodes/Internal/Misc/{GUI Out => Node_Application_Out}/info.json (76%) rename datafiles/data/Nodes/Internal/Misc/{Argument => Node_Argument}/info.json (59%) rename datafiles/data/Nodes/Internal/Misc/{Array Pin => Node_Array_Pin}/info.json (75%) rename datafiles/data/Nodes/Internal/Misc/{Assert => Node_Assert}/info.json (75%) rename datafiles/data/Nodes/Internal/Misc/{Cache => Node_Cache}/info.json (74%) rename datafiles/data/Nodes/Internal/Misc/{Cache Array => Node_Cache_Array}/info.json (75%) rename datafiles/data/Nodes/Internal/Misc/{Condition => Node_Condition}/info.json (82%) rename datafiles/data/Nodes/Internal/Misc/{Display Image => Node_Display_Image}/info.json (87%) rename datafiles/data/Nodes/Internal/Misc/{Display Text => Node_Display_Text}/info.json (80%) rename datafiles/data/Nodes/Internal/Misc/{Feedback => Node_Feedback}/info.json (87%) rename datafiles/data/Nodes/Internal/Misc/{Frame => Node_Frame}/info.json (83%) rename datafiles/data/Nodes/Internal/Misc/{Graph Preview => Node_Graph_Preview}/info.json (79%) rename datafiles/data/Nodes/Internal/Misc/{Group => Node_Group}/info.json (74%) rename datafiles/data/Nodes/Internal/Misc/{HLSL => Node_HLSL}/info.json (71%) rename datafiles/data/Nodes/Internal/Misc/{Loop => Node_Iterate}/info.json (86%) rename datafiles/data/Nodes/Internal/{Values/Loop Array => Misc/Node_Iterate_Each_Inline}/info.json (89%) rename datafiles/data/Nodes/Internal/Misc/{Filter Array => Node_Iterate_Filter_Inline}/info.json (73%) rename datafiles/data/Nodes/Internal/Misc/{Lua Compute => Node_Lua_Compute}/info.json (72%) rename datafiles/data/Nodes/Internal/Misc/{Lua Global => Node_Lua_Global}/info.json (75%) rename datafiles/data/Nodes/Internal/Misc/{Lua Surface => Node_Lua_Surface}/info.json (70%) rename datafiles/data/Nodes/Internal/Misc/{Monitor Capture => Node_Monitor_Capture}/info.json (72%) rename datafiles/data/Nodes/Internal/Misc/{Pin => Node_Pin}/info.json (89%) rename datafiles/data/Nodes/Internal/Misc/{Print => Node_Print}/info.json (75%) rename datafiles/data/Nodes/Internal/Misc/{Project Data => Node_Project_Data}/info.json (60%) rename datafiles/data/Nodes/Internal/Misc/{Execute Shell => Node_Shell}/info.json (79%) rename datafiles/data/Nodes/Internal/Misc/{Slideshow => Node_Slideshow}/info.json (76%) rename datafiles/data/Nodes/Internal/Misc/{Switch => Node_Switch}/info.json (70%) rename datafiles/data/Nodes/Internal/Misc/{Terminal trigger => Node_Terminal_Trigger}/info.json (60%) rename datafiles/data/Nodes/Internal/Misc/{Tunnel In => Node_Tunnel_In}/info.json (84%) rename datafiles/data/Nodes/Internal/Misc/{Tunnel Out => Node_Tunnel_Out}/info.json (83%) rename datafiles/data/Nodes/Internal/Misc/{Widget Test => Node_Widget_Test}/info.json (75%) rename datafiles/data/Nodes/Internal/RigidSim/{Input => Node_Group_Input}/info.json (66%) rename datafiles/data/Nodes/Internal/{Group/Output => RigidSim/Node_Group_Output}/info.json (66%) rename datafiles/data/Nodes/Internal/RigidSim/{Activate Physics => Node_Rigid_Activate}/info.json (63%) rename datafiles/data/Nodes/Internal/RigidSim/{Apply Force => Node_Rigid_Force_Apply}/info.json (60%) rename datafiles/data/Nodes/Internal/RigidSim/{RigidSim Global => Node_Rigid_Global}/info.json (52%) rename datafiles/data/Nodes/Internal/RigidSim/{Object => Node_Rigid_Object}/info.json (60%) rename datafiles/data/Nodes/Internal/RigidSim/{Object Spawner => Node_Rigid_Object_Spawner}/info.json (62%) rename datafiles/data/Nodes/Internal/RigidSim/{Rigidbody Override => Node_Rigid_Override}/info.json (65%) rename datafiles/data/Nodes/Internal/RigidSim/{Render => Node_Rigid_Render}/info.json (61%) create mode 100644 datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Render_Output/info.json rename datafiles/data/Nodes/Internal/RigidSim/{Rigidbody Variable => Node_Rigid_Variable}/info.json (64%) create mode 100644 datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Wall/info.json delete mode 100644 datafiles/data/Nodes/Internal/RigidSim/Wall/info.json delete mode 100644 datafiles/data/Nodes/Internal/SmokeSim/Input/info.json create mode 100644 datafiles/data/Nodes/Internal/SmokeSim/Node_Group_Input/info.json create mode 100644 datafiles/data/Nodes/Internal/SmokeSim/Node_Group_Output/info.json rename datafiles/data/Nodes/Internal/SmokeSim/{Add Emitter => Node_Smoke_Add}/info.json (60%) rename datafiles/data/Nodes/Internal/SmokeSim/{Add Collider => Node_Smoke_Add_Collider}/info.json (64%) rename datafiles/data/Nodes/Internal/SmokeSim/{Apply Velocity => Node_Smoke_Apply_Velocity}/info.json (60%) rename datafiles/data/Nodes/Internal/SmokeSim/{Domain => Node_Smoke_Domain}/info.json (50%) rename datafiles/data/Nodes/Internal/SmokeSim/{Queue Domain => Node_Smoke_Domain_Queue}/info.json (65%) rename datafiles/data/Nodes/Internal/SmokeSim/{Render Domain => Node_Smoke_Render}/info.json (68%) create mode 100644 datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Render_Output/info.json rename datafiles/data/Nodes/Internal/SmokeSim/{Repulse => Node_Smoke_Repulse}/info.json (61%) rename datafiles/data/Nodes/Internal/SmokeSim/{Turbulence => Node_Smoke_Turbulence}/info.json (63%) rename datafiles/data/Nodes/Internal/SmokeSim/{Update Domain => Node_Smoke_Update}/info.json (61%) rename datafiles/data/Nodes/Internal/SmokeSim/{Vortex => Node_Smoke_Vortex}/info.json (62%) delete mode 100644 datafiles/data/Nodes/Internal/SmokeSim/Output/info.json delete mode 100644 datafiles/data/Nodes/Internal/StrandSim/Input/info.json create mode 100644 datafiles/data/Nodes/Internal/StrandSim/Node_Group_Input/info.json create mode 100644 datafiles/data/Nodes/Internal/StrandSim/Node_Group_Output/info.json rename datafiles/data/Nodes/Internal/StrandSim/{Strand Break => Node_Strand_Break}/info.json (62%) rename datafiles/data/Nodes/Internal/StrandSim/{Strand Collision => Node_Strand_Collision}/info.json (65%) rename datafiles/data/Nodes/Internal/StrandSim/{Strand Create => Node_Strand_Create}/info.json (64%) rename datafiles/data/Nodes/Internal/StrandSim/{Strand Force Apply => Node_Strand_Force_Apply}/info.json (62%) rename datafiles/data/Nodes/Internal/StrandSim/{Strand Gravity => Node_Strand_Gravity}/info.json (64%) rename datafiles/data/Nodes/Internal/StrandSim/{Strand Length Adjust => Node_Strand_Length_Adjust}/info.json (63%) rename datafiles/data/Nodes/Internal/StrandSim/{Strand Render => Node_Strand_Render}/info.json (64%) rename datafiles/data/Nodes/Internal/StrandSim/{Strand Render Texture => Node_Strand_Render_Texture}/info.json (65%) rename datafiles/data/Nodes/Internal/StrandSim/{Strand Update => Node_Strand_Update}/info.json (62%) delete mode 100644 datafiles/data/Nodes/Internal/StrandSim/Output/info.json rename datafiles/data/Nodes/Internal/Transform/{Nine Slice => Node_9Slice}/info.json (90%) rename datafiles/data/Nodes/Internal/Transform/{Bend => Node_Bend}/info.json (72%) rename datafiles/data/Nodes/Internal/Transform/{Composite => Node_Composite}/info.json (87%) rename datafiles/data/Nodes/Internal/Transform/{Crop => Node_Crop}/info.json (84%) rename datafiles/data/Nodes/Internal/Transform/{Crop Content => Node_Crop_Content}/info.json (81%) rename datafiles/data/Nodes/Internal/Transform/{Flip => Node_Flip}/info.json (87%) rename datafiles/data/Nodes/Internal/Transform/{Mesh Warp => Node_Mesh_Warp}/info.json (85%) rename datafiles/data/Nodes/Internal/Transform/{Mirror => Node_Mirror}/info.json (75%) rename datafiles/data/Nodes/Internal/Transform/{Polar Mirror => Node_Mirror_Polar}/info.json (77%) rename datafiles/data/Nodes/Internal/Transform/{Offset => Node_Offset}/info.json (85%) rename datafiles/data/Nodes/Internal/Transform/{Padding => Node_Padding}/info.json (84%) rename datafiles/data/Nodes/Internal/Transform/{Polar => Node_Polar}/info.json (83%) rename datafiles/data/Nodes/Internal/Transform/{Scale => Node_Scale}/info.json (86%) rename datafiles/data/Nodes/Internal/Transform/{Scale Algorithm => Node_Scale_Algo}/info.json (89%) rename datafiles/data/Nodes/Internal/Transform/{Skew => Node_Skew}/info.json (87%) rename datafiles/data/Nodes/Internal/Transform/{Tile Random => Node_Tile_Random}/info.json (72%) rename datafiles/data/Nodes/Internal/Transform/{Transform => Node_Transform}/info.json (86%) rename datafiles/data/Nodes/Internal/Transform/{Warp => Node_Warp}/info.json (87%) rename datafiles/data/Nodes/Internal/Transform/{Area Warp => Node_Wrap_Area}/info.json (82%) delete mode 100644 datafiles/data/Nodes/Internal/VFX/Input/info.json create mode 100644 datafiles/data/Nodes/Internal/VFX/Node_Group_Input/info.json create mode 100644 datafiles/data/Nodes/Internal/VFX/Node_Group_Output/info.json rename datafiles/data/Nodes/Internal/VFX/{Accelerate => Node_VFX_Accelerate}/info.json (70%) rename datafiles/data/Nodes/Internal/VFX/{Attract => Node_VFX_Attract}/info.json (71%) rename datafiles/data/Nodes/Internal/VFX/{Boids => Node_VFX_Boids}/info.json (64%) rename datafiles/data/Nodes/Internal/VFX/{Destroy => Node_VFX_Destroy}/info.json (69%) rename datafiles/data/Nodes/Internal/VFX/{Oscillate => Node_VFX_Oscillate}/info.json (64%) rename datafiles/data/Nodes/Internal/VFX/{VFX Override => Node_VFX_Override}/info.json (64%) rename datafiles/data/Nodes/Internal/VFX/{Renderer => Node_VFX_Renderer}/info.json (71%) create mode 100644 datafiles/data/Nodes/Internal/VFX/Node_VFX_Renderer_Output/info.json rename datafiles/data/Nodes/Internal/VFX/{Repel => Node_VFX_Repel}/info.json (70%) rename datafiles/data/Nodes/Internal/VFX/{Spawner => Node_VFX_Spawner}/info.json (68%) rename datafiles/data/Nodes/Internal/VFX/{VFX Trail => Node_VFX_Trail}/info.json (63%) rename datafiles/data/Nodes/Internal/VFX/{VFX Triangulate => Node_VFX_Triangulate}/info.json (62%) rename datafiles/data/Nodes/Internal/VFX/{Turbulence => Node_VFX_Turbulence}/info.json (70%) rename datafiles/data/Nodes/Internal/VFX/{VFX Variable => Node_VFX_Variable}/info.json (64%) rename datafiles/data/Nodes/Internal/VFX/{Vortex => Node_VFX_Vortex}/info.json (70%) rename datafiles/data/Nodes/Internal/VFX/{Wind => Node_VFX_Wind}/info.json (68%) delete mode 100644 datafiles/data/Nodes/Internal/VFX/Output/info.json rename datafiles/data/Nodes/Internal/Values/{Area => Node_Area}/info.json (82%) rename datafiles/data/Nodes/Internal/Values/{Array => Node_Array}/info.json (69%) rename datafiles/data/Nodes/Internal/Values/{Array Add => Node_Array_Add}/info.json (81%) rename datafiles/data/Nodes/Internal/Values/{Parse CSV => Node_Array_CSV_Parse}/info.json (69%) rename datafiles/data/Nodes/Internal/Values/{Array Composite => Node_Array_Composite}/info.json (76%) rename datafiles/data/Nodes/Internal/Values/{Array Convolute => Node_Array_Convolute}/info.json (71%) rename datafiles/data/Nodes/Internal/Values/{Array Copy => Node_Array_Copy}/info.json (69%) rename datafiles/data/Nodes/Internal/Values/{Array Find => Node_Array_Find}/info.json (74%) rename datafiles/data/Nodes/Internal/Values/{Array Get => Node_Array_Get}/info.json (76%) rename datafiles/data/Nodes/Internal/Values/{Array Insert => Node_Array_Insert}/info.json (70%) rename datafiles/data/Nodes/Internal/Values/{Array Length => Node_Array_Length}/info.json (81%) rename datafiles/data/Nodes/Internal/Values/{Array Range => Node_Array_Range}/info.json (84%) rename datafiles/data/Nodes/Internal/Values/{Array Rearrange => Node_Array_Rearrange}/info.json (70%) rename datafiles/data/Nodes/Internal/Values/{Array Remove => Node_Array_Remove}/info.json (72%) rename datafiles/data/Nodes/Internal/Values/{Array Reverse => Node_Array_Reverse}/info.json (68%) rename datafiles/data/Nodes/Internal/Values/{Array Sample => Node_Array_Sample}/info.json (72%) rename datafiles/data/Nodes/Internal/Values/{Array Set => Node_Array_Set}/info.json (68%) rename datafiles/data/Nodes/Internal/Values/{Array Shift => Node_Array_Shift}/info.json (70%) rename datafiles/data/Nodes/Internal/Values/{Shuffle Array => Node_Array_Shuffle}/info.json (71%) rename datafiles/data/Nodes/Internal/Values/{Sort Array => Node_Array_Sort}/info.json (71%) rename datafiles/data/Nodes/Internal/Values/{Array Split => Node_Array_Split}/info.json (82%) rename datafiles/data/Nodes/Internal/Values/{Array Zip => Node_Array_Zip}/info.json (78%) rename datafiles/data/Nodes/Internal/Values/{Draw Atlas => Node_Atlas_Draw}/info.json (71%) rename datafiles/data/Nodes/Internal/Values/{Atlas Get => Node_Atlas_Get}/info.json (69%) rename datafiles/data/Nodes/Internal/Values/{Atlas Set => Node_Atlas_Set}/info.json (69%) rename datafiles/data/Nodes/Internal/Values/{Atlas to Struct => Node_Atlas_Struct}/info.json (71%) rename datafiles/data/Nodes/Internal/Values/{Convert Base => Node_Base_Convert}/info.json (77%) rename datafiles/data/Nodes/Internal/Values/{Boolean => Node_Boolean}/info.json (74%) rename datafiles/data/Nodes/Internal/Values/{Compare => Node_Compare}/info.json (91%) rename datafiles/data/Nodes/Internal/Values/{Equation => Node_Equation}/info.json (87%) rename datafiles/data/Nodes/Internal/{Animation/FFT => Values/Node_FFT}/info.json (81%) rename datafiles/data/Nodes/Internal/Values/{IsoSurf => Node_IsoSurf}/info.json (76%) rename datafiles/data/Nodes/Internal/{Misc/Loop Array => Values/Node_Iterate_Each_Inline}/info.json (89%) rename datafiles/data/Nodes/Internal/Values/{Filter Array => Node_Iterate_Filter_Inline}/info.json (73%) rename datafiles/data/Nodes/Internal/Values/{Sort Array Inline => Node_Iterate_Sort_Inline}/info.json (72%) rename datafiles/data/Nodes/Internal/Values/{Logic Opr => Node_Logic}/info.json (92%) rename datafiles/data/Nodes/Internal/Values/{Math => Node_Math}/info.json (95%) rename datafiles/data/Nodes/Internal/Values/{Path to Mesh => Node_Mesh_Create_Path}/info.json (70%) rename datafiles/data/Nodes/Internal/Values/{Mesh Transform => Node_Mesh_Transform}/info.json (71%) rename datafiles/data/Nodes/Internal/Values/{Translate Point => Node_Move_Point}/info.json (71%) rename datafiles/data/Nodes/Internal/Values/{Number => Node_Number}/info.json (83%) rename datafiles/data/Nodes/Internal/Values/{Path => Node_Path}/info.json (86%) rename datafiles/data/Nodes/Internal/Values/{3D Path => Node_Path_3D}/info.json (70%) rename datafiles/data/Nodes/Internal/Values/{Path Anchor => Node_Path_Anchor}/info.json (72%) rename datafiles/data/Nodes/Internal/Values/{Path Combine => Node_Path_Array}/info.json (76%) rename datafiles/data/Nodes/Internal/Values/{Bake Path => Node_Path_Bake}/info.json (74%) rename datafiles/data/Nodes/Internal/Values/{Blend Path => Node_Path_Blend}/info.json (81%) rename datafiles/data/Nodes/Internal/Values/{Bridge Path => Node_Path_Bridge}/info.json (76%) rename datafiles/data/Nodes/Internal/Values/{Path Builder => Node_Path_Builder}/info.json (72%) rename datafiles/data/Nodes/Internal/Values/{Fill Path => Node_Path_Fill}/info.json (68%) rename datafiles/data/Nodes/Internal/Values/{Path from Mask => Node_Path_From_Mask}/info.json (73%) rename datafiles/data/Nodes/Internal/Values/{L system => Node_Path_L_System}/info.json (71%) rename datafiles/data/Nodes/Internal/Values/{Map Path => Node_Path_Map}/info.json (74%) rename datafiles/data/Nodes/Internal/Values/{Remap Path => Node_Path_Map_Area}/info.json (70%) rename datafiles/data/Nodes/Internal/Values/{Morph Path => Node_Path_Morph}/info.json (73%) rename datafiles/data/Nodes/Internal/Values/{Plot Path => Node_Path_Plot}/info.json (72%) rename datafiles/data/Nodes/Internal/Values/{Repeat Path => Node_Path_Repeat}/info.json (67%) rename datafiles/data/Nodes/Internal/Values/{Reverse Path => Node_Path_Reverse}/info.json (70%) rename datafiles/data/Nodes/Internal/Values/{Sample Path => Node_Path_Sample}/info.json (83%) rename datafiles/data/Nodes/Internal/Values/{Scatter Path => Node_Path_Scatter}/info.json (71%) rename datafiles/data/Nodes/Internal/Values/{Separate File Path => Node_Path_Separate_Folder}/info.json (73%) rename datafiles/data/Nodes/Internal/Values/{Shape Path => Node_Path_Shape}/info.json (71%) rename datafiles/data/Nodes/Internal/Values/{Shift Path => Node_Path_Shift}/info.json (70%) rename datafiles/data/Nodes/Internal/Values/{Smooth Path => Node_Path_Smooth}/info.json (72%) rename datafiles/data/Nodes/Internal/Values/{Transform Path => Node_Path_Transform}/info.json (70%) rename datafiles/data/Nodes/Internal/Values/{Trim Path => Node_Path_Trim}/info.json (67%) rename datafiles/data/Nodes/Internal/Values/{Wave Path => Node_Path_Wave}/info.json (76%) rename datafiles/data/Nodes/Internal/Values/{Point in Area => Node_Point_In_Area}/info.json (71%) rename datafiles/data/Nodes/Internal/Values/{Random => Node_Random}/info.json (84%) rename datafiles/data/Nodes/Internal/Values/{Scatter Points => Node_Scatter_Points}/info.json (71%) rename datafiles/data/Nodes/Internal/Values/{Filter Segments => Node_Segment_Filter}/info.json (73%) rename datafiles/data/Nodes/Internal/Values/{Statistic => Node_Statistic}/info.json (91%) rename datafiles/data/Nodes/Internal/Values/{Text => Node_String}/info.json (83%) rename datafiles/data/Nodes/Internal/Values/{Get Character => Node_String_Get_Char}/info.json (70%) rename datafiles/data/Nodes/Internal/Values/{Join Text Array => Node_String_Join}/info.json (76%) rename datafiles/data/Nodes/Internal/Values/{Text Length => Node_String_Length}/info.json (73%) rename datafiles/data/Nodes/Internal/Values/{Combine Texts => Node_String_Merge}/info.json (86%) rename datafiles/data/Nodes/Internal/Values/{RegEx Match => Node_String_Regex_Match}/info.json (73%) rename datafiles/data/Nodes/Internal/Values/{RegEx Replace => Node_String_Regex_Replace}/info.json (73%) rename datafiles/data/Nodes/Internal/Values/{RegEx Search => Node_String_Regex_Search}/info.json (72%) rename datafiles/data/Nodes/Internal/Values/{Split Text => Node_String_Split}/info.json (83%) rename datafiles/data/Nodes/Internal/Values/{Trim Text => Node_String_Trim}/info.json (73%) rename datafiles/data/Nodes/Internal/Values/{Struct => Node_Struct}/info.json (82%) rename datafiles/data/Nodes/Internal/Values/{Struct Get => Node_Struct_Get}/info.json (81%) rename datafiles/data/Nodes/Internal/Values/{Parse JSON => Node_Struct_JSON_Parse}/info.json (72%) rename datafiles/data/Nodes/Internal/Values/{Struct Set => Node_Struct_Set}/info.json (79%) rename datafiles/data/Nodes/Internal/Values/{Surface from Buffer => Node_Surface_From_Buffer}/info.json (77%) rename datafiles/data/Nodes/Internal/Values/{Buffer from Surface => Node_Surface_To_Buffer}/info.json (77%) rename datafiles/data/Nodes/Internal/Values/{Surface Data => Node_Surface_data}/info.json (75%) rename datafiles/data/Nodes/Internal/Values/{To Number => Node_To_Number}/info.json (76%) rename datafiles/data/Nodes/Internal/Values/{To Text => Node_To_Text}/info.json (70%) rename datafiles/data/Nodes/Internal/Values/{Transform Array => Node_Transform_Array}/info.json (70%) rename datafiles/data/Nodes/Internal/Values/{Trigger => Node_Trigger}/info.json (72%) rename datafiles/data/Nodes/Internal/Values/{Boolean Trigger => Node_Trigger_Bool}/info.json (75%) rename datafiles/data/Nodes/Internal/Values/{Unicode => Node_Unicode}/info.json (82%) rename datafiles/data/Nodes/Internal/Values/{Vector2 => Node_Vector2}/info.json (83%) rename datafiles/data/Nodes/Internal/Values/{Vector3 => Node_Vector3}/info.json (83%) rename datafiles/data/Nodes/Internal/Values/{Vector4 => Node_Vector4}/info.json (83%) rename datafiles/data/Nodes/Internal/Values/{Cross product 2D => Node_Vector_Cross_2D}/info.json (71%) rename datafiles/data/Nodes/Internal/Values/{Cross product 3D => Node_Vector_Cross_3D}/info.json (71%) rename datafiles/data/Nodes/Internal/Values/{Dot product => Node_Vector_Dot}/info.json (72%) rename datafiles/data/Nodes/Internal/Values/{Magnitude => Node_Vector_Magnitude}/info.json (77%) rename datafiles/data/Nodes/Internal/Values/{Vector Split => Node_Vector_Split}/info.json (83%) rename datafiles/data/Nodes/Internal/Values/{Swizzle => Node_Vector_Swizzle}/info.json (77%) create mode 100644 datafiles/data/Nodes/Internal/pb_Array/Node_Array/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Array/Node_Array_Get/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Array/Node_Array_Insert/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Array/Node_Array_Remove/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Array/Node_Array_Set/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Contract/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Divide/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Divide_Grid/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Inset/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Mirror/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Split/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Transform/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Box/Node_PB_Layer/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Angle/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Blob/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Diamond/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Ellipse/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Fill/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Line/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Rectangle/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Round_Rectangle/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Semi_Ellipse/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Trapezoid/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Add/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Brick/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Hash/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Highlight/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Intersect/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Outline/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Radial/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Shading/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Stack/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Strip/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Subtract/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Group/Node_Group_Input/info.json create mode 100644 datafiles/data/Nodes/Internal/pb_Group/Node_Group_Output/info.json create mode 100644 datafiles/data/Nodes/Internal/pcx_Flow Control/Node_PCX_Condition/info.json create mode 100644 datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_Array_Get/info.json create mode 100644 datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_Array_Set/info.json create mode 100644 datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_Equation/info.json create mode 100644 datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_fn_Math/info.json create mode 100644 datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_fn_Random/info.json create mode 100644 datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_fn_Surface_Height/info.json create mode 100644 datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_fn_Surface_Width/info.json create mode 100644 datafiles/data/Nodes/Internal/pcx_Variable/Node_PCX_fn_var/info.json create mode 100644 datafiles/data/Nodes/Internal/pcx_Variable/Node_PCX_var/info.json rename datafiles/data/{ => Nodes}/Tooltip.zip (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_2D_light.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_9Slice.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Alpha_Cutoff.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Alpha_Grey.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Atlas.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Average.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_BW.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Bend.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Bevel.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Blend.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Blend_Edge.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Blobify.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Bloom.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Blur.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Blur_Bokeh.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Blur_Contrast.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Blur_Directional.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Blur_Path.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Blur_Radial.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Blur_Shape.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Blur_Simple.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Blur_Slope.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Blur_Zoom.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Box_Pattern.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Brush_Linear.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Camera.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Canvas.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Caustic.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Cellular.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Checker.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Chromatic_Aberration.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Color_Remove.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Color_adjust.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Color_replace.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Colorize.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Colors_Replace.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Combine_HSV.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Combine_RGB.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Composite.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Convolution.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Corner.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Crop.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Crop_Content.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Curve.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Curve_HSV.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Diffuse.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Dilate.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Displace.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Dither.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Edge_Detect.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Erode.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Export.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_FLIP_Group_Inline.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_FXAA.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Flip.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Flood_Fill.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Flow_Noise.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Fold_Noise.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Gabor_Noise.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Gamma_Map.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Glow.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Gradient.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Gradient_Points.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Grain.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Grey_Alpha.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Greyscale.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Grid.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Grid_Hex.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Grid_Pentagonal.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Grid_Tri.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_HSV_Channel.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Herringbone_Tile.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Honeycomb_Noise.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Image.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Image_Animated.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Image_Sequence.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Image_Sheet.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Image_gif.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Interlaced.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Interpret_Number.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Invert.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_JPEG.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Kuwahara.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Level.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Level_Selector.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Line.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Local_Analyze.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_MK_Blinker.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_MK_Brownian.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_MK_Delay_Machine.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_MK_Fall.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_MK_Flag.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_MK_Flare.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_MK_Fracture.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_MK_GridBalls.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_MK_GridFlip.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_MK_Rain.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_MK_Saber.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_MK_Tile.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Mesh_Warp.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Mirror.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Morph_Surface.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Noise.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Noise_Aniso.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Noise_Bubble.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Noise_Cristal.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Noise_Simplex.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Noise_Strand.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Normal.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Normal_Light.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Normalize.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Outline.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Override_Channel.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Padding.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Palette_Shift.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Particle.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Path_Profile.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Perlin.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Perlin_Extra.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Pixel_Cloud.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Pixel_Sampler.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Pixel_Sort.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Plot_Linear.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Polar.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Posterize.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Pytagorean_Tile.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Quasicrystal.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_RD.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_RGB_Channel.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Random_Tile.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Region_Fill.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Render_Sprite_Sheet.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Repeat.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Repeat_Texture.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Rigid_Group_Inline.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_SDF.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Scale.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Scale_Algo.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Scatter.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Sequence_Anim.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Shadow.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Shadow_Cast.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Shape.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Shape_Map.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Shape_Polygon.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Shard_Noise.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Skew.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Smear.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Smoke_Group_Inline.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Solid.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Spherize.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Sprite_Stack.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Stack.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Strand_Group_Inline.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Stripe.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Text.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Texture_Remap.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Threshold.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Tile_Random.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Time_Remap.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Tonemap_ACE.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Trail.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Transform.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Twirl.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_VFX_Group_Inline.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Vignette.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Voronoi_Extra.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Warp.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Wavelet_Noise.png (100%) rename datafiles/data/{ => Nodes}/Tooltip/Node_Zigzag.png (100%) create mode 100644 datafiles/data/Nodes/display_data.json delete mode 100644 datafiles/data/Nodes/generator.ipynb rename datafiles/data/{ => Nodes}/related_node.json (100%) delete mode 100644 datafiles/data/nodes.json diff --git a/PixelComposer.yyp b/PixelComposer.yyp index 92892dda8..8daf2d116 100644 --- a/PixelComposer.yyp +++ b/PixelComposer.yyp @@ -330,20 +330,7 @@ {"$GMFolder":"","%Name":"text","folderPath":"folders/widgets/text.yy","name":"text","resourceType":"GMFolder","resourceVersion":"2.0",}, ], "IncludedFiles":[ - {"$GMIncludedFile":"","%Name":"Actions.zip","CopyToMask":-1,"filePath":"datafiles/data","name":"Actions.zip","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"icons.afdesign","CopyToMask":-1,"filePath":"datafiles/data/Actions","name":"icons.afdesign","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Armature Build.json","CopyToMask":-1,"filePath":"datafiles/data/Actions/Nodes","name":"Armature Build.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Armature Build.png","CopyToMask":-1,"filePath":"datafiles/data/Actions/Nodes","name":"Armature Build.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Create Tilemap.json","CopyToMask":-1,"filePath":"datafiles/data/Actions/Nodes","name":"Create Tilemap.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Create Tilemap.png","CopyToMask":-1,"filePath":"datafiles/data/Actions/Nodes","name":"Create Tilemap.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Follow Path.json","CopyToMask":-1,"filePath":"datafiles/data/Actions/Nodes","name":"Follow Path.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Follow Path.png","CopyToMask":-1,"filePath":"datafiles/data/Actions/Nodes","name":"Follow Path.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Iso cube.json","CopyToMask":-1,"filePath":"datafiles/data/Actions/Nodes","name":"Iso cube.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Iso cube.png","CopyToMask":-1,"filePath":"datafiles/data/Actions/Nodes","name":"Iso cube.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Line from Path.json","CopyToMask":-1,"filePath":"datafiles/data/Actions/Nodes","name":"Line from Path.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Line from Path.png","CopyToMask":-1,"filePath":"datafiles/data/Actions/Nodes","name":"Line from Path.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Pixel iso cube.json","CopyToMask":-1,"filePath":"datafiles/data/Actions/Nodes","name":"Pixel iso cube.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Pixel iso cube.png","CopyToMask":-1,"filePath":"datafiles/data/Actions/Nodes","name":"Pixel iso cube.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"Actions.zip","CopyToMask":-1,"filePath":"datafiles/data/Nodes","name":"Actions.zip","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, {"$GMIncludedFile":"","%Name":"Addons.zip","CopyToMask":-1,"filePath":"datafiles/data","name":"Addons.zip","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, {"$GMIncludedFile":"","%Name":"Assets.zip","CopyToMask":-1,"filePath":"datafiles/data","name":"Assets.zip","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, {"$GMIncludedFile":"","%Name":"Collections.zip","CopyToMask":-1,"filePath":"datafiles/data","name":"Collections.zip","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, @@ -383,182 +370,58 @@ {"$GMIncludedFile":"","%Name":"UI.json","CopyToMask":-1,"filePath":"datafiles/data/Locale/sample locale","name":"UI.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, {"$GMIncludedFile":"","%Name":"words.json","CopyToMask":-1,"filePath":"datafiles/data/locale/sample locale","name":"words.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, {"$GMIncludedFile":"","%Name":"words.json","CopyToMask":-1,"filePath":"datafiles/data/Locale/sample locale","name":"words.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"nodes.json","CopyToMask":-1,"filePath":"datafiles/data","name":"nodes.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Nodes.zip","CopyToMask":-1,"filePath":"datafiles/data","name":"Nodes.zip","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"related_node.json","CopyToMask":-1,"filePath":"datafiles/data","name":"related_node.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"display_data.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes","name":"display_data.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"Internal.zip","CopyToMask":-1,"filePath":"datafiles/data/Nodes","name":"Internal.zip","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Array/Node_Array_Get","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Array/Node_Array_Insert","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Array/Node_Array_Remove","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Array/Node_Array_Set","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Array/Node_Array","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Contract","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Divide_Grid","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Divide","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Inset","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Mirror","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Split","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Transform","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Box/Node_PB_Layer","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Angle","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Blob","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Diamond","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Ellipse","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Fill","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Line","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Rectangle","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Round_Rectangle","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Semi_Ellipse","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Trapezoid","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Add","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Brick","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Hash","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Highlight","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Intersect","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Outline","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Radial","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Shading","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Stack","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Strip","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Subtract","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Group/Node_Group_Input","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pb_Group/Node_Group_Output","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pcx_Flow Control/Node_PCX_Condition","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_Array_Get","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_Array_Set","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_Equation","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_fn_Math","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_fn_Random","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_fn_Surface_Height","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_fn_Surface_Width","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pcx_Variable/Node_PCX_fn_var","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/pcx_Variable/Node_PCX_var","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"related_node.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes","name":"related_node.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, {"$GMIncludedFile":"","%Name":"tileset_gamemaker2_room.yy","CopyToMask":-1,"filePath":"datafiles/data/TemplateStrings","name":"tileset_gamemaker2_room.yy","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, {"$GMIncludedFile":"","%Name":"Theme.zip","CopyToMask":-1,"filePath":"datafiles/data","name":"Theme.zip","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Tooltip.zip","CopyToMask":-1,"filePath":"datafiles/data","name":"Tooltip.zip","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_2D_light.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_2D_light.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_9Slice.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_9Slice.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Alpha_Cutoff.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Alpha_Cutoff.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Alpha_Grey.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Alpha_Grey.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Atlas.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Atlas.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Average.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Average.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Bend.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Bend.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Bevel.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Bevel.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Blend_Edge.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Blend_Edge.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Blend.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Blend.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Blobify.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Blobify.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Bloom.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Bloom.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Blur_Bokeh.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Blur_Bokeh.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Blur_Contrast.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Blur_Contrast.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Blur_Directional.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Blur_Directional.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Blur_Path.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Blur_Path.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Blur_Radial.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Blur_Radial.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Blur_Shape.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Blur_Shape.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Blur_Simple.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Blur_Simple.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Blur_Slope.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Blur_Slope.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Blur_Zoom.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Blur_Zoom.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Blur.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Blur.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Box_Pattern.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Box_Pattern.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Brush_Linear.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Brush_Linear.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_BW.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_BW.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Camera.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Camera.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Canvas.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Canvas.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Caustic.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Caustic.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Cellular.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Cellular.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Checker.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Checker.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Chromatic_Aberration.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Chromatic_Aberration.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Color_adjust.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Color_adjust.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Color_Remove.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Color_Remove.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Color_replace.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Color_replace.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Colorize.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Colorize.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Colors_Replace.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Colors_Replace.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Combine_HSV.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Combine_HSV.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Combine_RGB.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Combine_RGB.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Composite.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Composite.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Convolution.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Convolution.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Corner.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Corner.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Crop_Content.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Crop_Content.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Crop.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Crop.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Curve_HSV.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Curve_HSV.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Curve.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Curve.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Diffuse.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Diffuse.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Dilate.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Dilate.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Displace.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Displace.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Dither.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Dither.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Edge_Detect.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Edge_Detect.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Erode.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Erode.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Export.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Export.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_FLIP_Group_Inline.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_FLIP_Group_Inline.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Flip.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Flip.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Flood_Fill.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Flood_Fill.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Flow_Noise.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Flow_Noise.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Fold_Noise.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Fold_Noise.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_FXAA.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_FXAA.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Gabor_Noise.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Gabor_Noise.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Gamma_Map.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Gamma_Map.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Glow.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Glow.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Gradient_Points.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Gradient_Points.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Gradient.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Gradient.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Grain.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Grain.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Grey_Alpha.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Grey_Alpha.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Greyscale.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Greyscale.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Grid_Hex.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Grid_Hex.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Grid_Pentagonal.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Grid_Pentagonal.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Grid_Tri.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Grid_Tri.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Grid.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Grid.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Herringbone_Tile.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Herringbone_Tile.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Honeycomb_Noise.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Honeycomb_Noise.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_HSV_Channel.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_HSV_Channel.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Image_Animated.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Image_Animated.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Image_gif.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Image_gif.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Image_Sequence.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Image_Sequence.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Image_Sheet.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Image_Sheet.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Image.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Image.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Interlaced.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Interlaced.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Interpret_Number.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Interpret_Number.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Invert.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Invert.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_JPEG.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_JPEG.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Kuwahara.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Kuwahara.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Level_Selector.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Level_Selector.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Level.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Level.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Line.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Line.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Local_Analyze.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Local_Analyze.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Mesh_Warp.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Mesh_Warp.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Mirror.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Mirror.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_MK_Blinker.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_MK_Blinker.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_MK_Brownian.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_MK_Brownian.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_MK_Delay_Machine.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_MK_Delay_Machine.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_MK_Fall.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_MK_Fall.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_MK_Flag.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_MK_Flag.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_MK_Flare.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_MK_Flare.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_MK_Fracture.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_MK_Fracture.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_MK_GridBalls.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_MK_GridBalls.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_MK_GridFlip.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_MK_GridFlip.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_MK_Rain.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_MK_Rain.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_MK_Saber.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_MK_Saber.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_MK_Tile.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_MK_Tile.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Morph_Surface.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Morph_Surface.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Noise_Aniso.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Noise_Aniso.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Noise_Bubble.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Noise_Bubble.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Noise_Cristal.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Noise_Cristal.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Noise_Simplex.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Noise_Simplex.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Noise_Strand.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Noise_Strand.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Noise.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Noise.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Normal_Light.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Normal_Light.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Normal.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Normal.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Normalize.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Normalize.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Outline.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Outline.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Override_Channel.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Override_Channel.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Padding.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Padding.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Palette_Shift.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Palette_Shift.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Particle.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Particle.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Path_Profile.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Path_Profile.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Perlin_Extra.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Perlin_Extra.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Perlin.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Perlin.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Pixel_Cloud.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Pixel_Cloud.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Pixel_Sampler.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Pixel_Sampler.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Pixel_Sort.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Pixel_Sort.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Plot_Linear.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Plot_Linear.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Polar.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Polar.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Posterize.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Posterize.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Pytagorean_Tile.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Pytagorean_Tile.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Quasicrystal.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Quasicrystal.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Random_Tile.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Random_Tile.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_RD.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_RD.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Region_Fill.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Region_Fill.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Render_Sprite_Sheet.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Render_Sprite_Sheet.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Repeat_Texture.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Repeat_Texture.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Repeat.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Repeat.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_RGB_Channel.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_RGB_Channel.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Rigid_Group_Inline.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Rigid_Group_Inline.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Scale_Algo.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Scale_Algo.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Scale.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Scale.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Scatter.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Scatter.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_SDF.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_SDF.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Sequence_Anim.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Sequence_Anim.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Shadow_Cast.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Shadow_Cast.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Shadow.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Shadow.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Shape_Map.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Shape_Map.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Shape_Polygon.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Shape_Polygon.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Shape.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Shape.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Shard_Noise.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Shard_Noise.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Skew.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Skew.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Smear.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Smear.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Smoke_Group_Inline.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Smoke_Group_Inline.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Solid.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Solid.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Spherize.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Spherize.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Sprite_Stack.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Sprite_Stack.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Stack.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Stack.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Strand_Group_Inline.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Strand_Group_Inline.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Stripe.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Stripe.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Text.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Text.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Texture_Remap.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Texture_Remap.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Threshold.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Threshold.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Tile_Random.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Tile_Random.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Time_Remap.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Time_Remap.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Tonemap_ACE.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Tonemap_ACE.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Trail.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Trail.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Transform.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Transform.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Twirl.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Twirl.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_VFX_Group_Inline.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_VFX_Group_Inline.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Vignette.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Vignette.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Voronoi_Extra.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Voronoi_Extra.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Warp.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Warp.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Wavelet_Noise.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Wavelet_Noise.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, - {"$GMIncludedFile":"","%Name":"Node_Zigzag.png","CopyToMask":-1,"filePath":"datafiles/data/Tooltip","name":"Node_Zigzag.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, + {"$GMIncludedFile":"","%Name":"Tooltip.zip","CopyToMask":-1,"filePath":"datafiles/data/Nodes","name":"Tooltip.zip","resourceType":"GMIncludedFile","resourceVersion":"2.0",}, {"$GMIncludedFile":"","%Name":"dllcredits.txt","ConfigValues":{ "Itch":{ "CopyToMask":"0", diff --git a/datafiles/data/Nodes.zip b/datafiles/data/Nodes.zip deleted file mode 100644 index e0afd6e393575812d71b4e7c27ccf99de922a745..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 305147 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 z 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�(S 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

Zh7hZ_Teu6`@q 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 literal 0 HcmV?d00001 diff --git a/datafiles/data/Nodes/Internal/3D/3D Camera/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Camera/info.json similarity index 75% rename from datafiles/data/Nodes/Internal/3D/3D Camera/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Camera/info.json index 07d333f9f..cbd62567c 100644 --- a/datafiles/data/Nodes/Internal/3D/3D Camera/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Camera/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create 3D camera that render scene to surface.", + "spr":"s_node_3d_camera", + "pxc_version":11510.0, "baseNode":"Node_3D_Camera", "io":[ "d3Mesh", diff --git a/datafiles/data/Nodes/Internal/3D/3D Camera Set/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Camera_Set/info.json similarity index 75% rename from datafiles/data/Nodes/Internal/3D/3D Camera Set/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Camera_Set/info.json index f8c2ef500..7ba4b69b4 100644 --- a/datafiles/data/Nodes/Internal/3D/3D Camera Set/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Camera_Set/info.json @@ -1,5 +1,7 @@ { "tooltip":"3D camera with built-in key and fill directional lights.", + "spr":"s_node_3d_camera_set", + "pxc_version":11571.0, "baseNode":"Node_3D_Camera_Set", "io":[ "d3Mesh", diff --git a/datafiles/data/Nodes/Internal/3D/3D Displace/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Displace/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/3D/3D Displace/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Displace/info.json index 74b26895b..827044712 100644 --- a/datafiles/data/Nodes/Internal/3D/3D Displace/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Displace/info.json @@ -1,5 +1,7 @@ { "tooltip":"Shift vertex of 3D mesh using 2D map.", + "spr":"s_node_3d_displace", + "pxc_version":118010.0, "baseNode":"Node_3D_Displace", "io":[ "d3Mesh" diff --git a/datafiles/data/Nodes/Internal/3D/Directional Light/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Light_Directional/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/3D/Directional Light/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Light_Directional/info.json index f1ece5b92..c8aabe09b 100644 --- a/datafiles/data/Nodes/Internal/3D/Directional Light/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Light_Directional/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create directional light directed at the origin point.", + "spr":"s_node_3d_light_directional", + "pxc_version":11510.0, "baseNode":"Node_3D_Light_Directional", "io":[ "d3Mesh" diff --git a/datafiles/data/Nodes/Internal/3D/Point Light/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Light_Point/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/3D/Point Light/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Light_Point/info.json index 0dc178bf7..66586db16 100644 --- a/datafiles/data/Nodes/Internal/3D/Point Light/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Light_Point/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create point light to illuminate surrounding area.", + "spr":"s_node_3d_light_point", + "pxc_version":11510.0, "baseNode":"Node_3D_Light_Point", "io":[ "d3Mesh" diff --git a/datafiles/data/Nodes/Internal/3D/3D Material/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Material/info.json similarity index 74% rename from datafiles/data/Nodes/Internal/3D/3D Material/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Material/info.json index 3215ef4bb..fce81212d 100644 --- a/datafiles/data/Nodes/Internal/3D/3D Material/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Material/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create 3D material with adjustable parameters.", + "spr":"s_node_3d_material", + "pxc_version":11510.0, "baseNode":"Node_3D_Material", "io":[ "d3Mesh", diff --git a/datafiles/data/Nodes/Internal/3D/3D Cone/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Cone/info.json similarity index 67% rename from datafiles/data/Nodes/Internal/3D/3D Cone/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Cone/info.json index 899a756da..7bbec1e1f 100644 --- a/datafiles/data/Nodes/Internal/3D/3D Cone/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Cone/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create 3D cone mesh", + "spr":"s_node_3d_mesh_cone", + "pxc_version":11510.0, "baseNode":"Node_3D_Mesh_Cone", "io":[ "d3Mesh" diff --git a/datafiles/data/Nodes/Internal/3D/3D Cube/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Cube/info.json similarity index 68% rename from datafiles/data/Nodes/Internal/3D/3D Cube/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Cube/info.json index b3911649f..422b6f5ac 100644 --- a/datafiles/data/Nodes/Internal/3D/3D Cube/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Cube/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create 3D cube mesh.", + "spr":"s_node_3d_mesh_cube", + "pxc_version":11510.0, "baseNode":"Node_3D_Mesh_Cube", "io":[ "d3Mesh" diff --git a/datafiles/data/Nodes/Internal/3D/3D Cylinder/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Cylinder/info.json similarity index 68% rename from datafiles/data/Nodes/Internal/3D/3D Cylinder/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Cylinder/info.json index d58decda7..e7166ecd1 100644 --- a/datafiles/data/Nodes/Internal/3D/3D Cylinder/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Cylinder/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create 3D cylinder mesh", + "spr":"s_node_3d_mesh_cylinder", + "pxc_version":11510.0, "baseNode":"Node_3D_Mesh_Cylinder", "io":[ "d3Mesh" diff --git a/datafiles/data/Nodes/Internal/3D/Mesh Export/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Export/info.json similarity index 69% rename from datafiles/data/Nodes/Internal/3D/Mesh Export/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Export/info.json index 302b1efd4..2d82dd2b2 100644 --- a/datafiles/data/Nodes/Internal/3D/Mesh Export/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Export/info.json @@ -1,5 +1,7 @@ { "tooltip":"Export 3D mesh as .obj file", + "spr":"s_node_3d_mesh_export", + "pxc_version":11740.0, "baseNode":"Node_3D_Mesh_Export", "io":[ "d3Mesh" diff --git a/datafiles/data/Nodes/Internal/3D/Surface Extrude/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Extrude/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/3D/Surface Extrude/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Extrude/info.json index 65cbfe705..0583123e2 100644 --- a/datafiles/data/Nodes/Internal/3D/Surface Extrude/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Extrude/info.json @@ -1,5 +1,7 @@ { "tooltip":"Extrude 2D image into 3D object.", + "spr":"s_node_3d_mesh_extrude", + "pxc_version":11510.0, "baseNode":"Node_3D_Mesh_Extrude", "io":[ "d3Mesh", diff --git a/datafiles/data/Nodes/Internal/3D/3D Object/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Obj/info.json similarity index 76% rename from datafiles/data/Nodes/Internal/3D/3D Object/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Obj/info.json index 43138039a..4aebf1f9f 100644 --- a/datafiles/data/Nodes/Internal/3D/3D Object/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Obj/info.json @@ -1,5 +1,7 @@ { "tooltip":"Load .obj file from your computer as a 3D object.", + "spr":"s_node_3d_mesh_obj", + "pxc_version":11510.0, "baseNode":"Node_3D_Mesh_Obj", "io":[ "d3Mesh" diff --git a/datafiles/data/Nodes/Internal/3D/Path Extrude/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Path_Extrude/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/3D/Path Extrude/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Path_Extrude/info.json index 9ba72d1cc..983ca98ce 100644 --- a/datafiles/data/Nodes/Internal/3D/Path Extrude/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Path_Extrude/info.json @@ -1,5 +1,7 @@ { "tooltip":"Extrude path into 3D object.", + "spr":"s_node_3d_mesh_path_extrude", + "pxc_version":11750.0, "baseNode":"Node_3D_Mesh_Path_Extrude", "io":[ "d3Mesh", diff --git a/datafiles/data/Nodes/Internal/3D/3D Plane/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Plane/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/3D/3D Plane/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Plane/info.json index d04ad2f42..1ae774e76 100644 --- a/datafiles/data/Nodes/Internal/3D/3D Plane/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Plane/info.json @@ -1,5 +1,7 @@ { "tooltip":"Put 2D image on a plane in 3D space.", + "spr":"s_node_3d_mesh_plane", + "pxc_version":11510.0, "baseNode":"Node_3D_Mesh_Plane", "io":[ "d3Mesh" diff --git a/datafiles/data/Nodes/Internal/3D/3D Icosphere/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Sphere_Ico/info.json similarity index 68% rename from datafiles/data/Nodes/Internal/3D/3D Icosphere/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Sphere_Ico/info.json index 4c8518dfc..d09845fc3 100644 --- a/datafiles/data/Nodes/Internal/3D/3D Icosphere/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Sphere_Ico/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create 3D icosphere mesh", + "spr":"s_node_3d_mesh_sphere_ico", + "pxc_version":11510.0, "baseNode":"Node_3D_Mesh_Sphere_Ico", "io":[ "d3Mesh" diff --git a/datafiles/data/Nodes/Internal/3D/3D UV Sphere/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Sphere_UV/info.json similarity index 68% rename from datafiles/data/Nodes/Internal/3D/3D UV Sphere/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Sphere_UV/info.json index b58e6a9b5..72e7f4979 100644 --- a/datafiles/data/Nodes/Internal/3D/3D UV Sphere/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Sphere_UV/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create 3D uv sphere mesh", + "spr":"s_node_3d_mesh_sphere_uv", + "pxc_version":11510.0, "baseNode":"Node_3D_Mesh_Sphere_UV", "io":[ "d3Mesh" diff --git a/datafiles/data/Nodes/Internal/3D/Slice Stack/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Stack_Slice/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/3D/Slice Stack/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Stack_Slice/info.json index 15d428096..e8ead668f 100644 --- a/datafiles/data/Nodes/Internal/3D/Slice Stack/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Stack_Slice/info.json @@ -1,5 +1,7 @@ { "tooltip":"Slice 3D object into array of 2d images.", + "spr":"s_node_3d_mesh_stack_slice", + "pxc_version":11750.0, "baseNode":"Node_3D_Mesh_Stack_Slice", "io":[ "d3Mesh" diff --git a/datafiles/data/Nodes/Internal/3D/3D Terrain/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Terrain/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/3D/3D Terrain/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Terrain/info.json index db90da96c..d8a0b6229 100644 --- a/datafiles/data/Nodes/Internal/3D/3D Terrain/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Terrain/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create 3D terrain from height map.", + "spr":"s_node_3d_mesh_terrain", + "pxc_version":11560.0, "baseNode":"Node_3D_Mesh_Terrain", "io":[ "d3Mesh", diff --git a/datafiles/data/Nodes/Internal/3D/3D Torus/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Torus/info.json similarity index 67% rename from datafiles/data/Nodes/Internal/3D/3D Torus/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Torus/info.json index 44cc82437..c30ed50d0 100644 --- a/datafiles/data/Nodes/Internal/3D/3D Torus/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Torus/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create 3D torus mesh", + "spr":"s_node_3d_mesh_torus", + "pxc_version":118010.0, "baseNode":"Node_3D_Mesh_Torus", "io":[ "d3Mesh" diff --git a/datafiles/data/Nodes/Internal/3D/3D Wall Builder/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Wall_Builder/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/3D/3D Wall Builder/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Wall_Builder/info.json index 3101b7ad2..dc9204069 100644 --- a/datafiles/data/Nodes/Internal/3D/3D Wall Builder/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Mesh_Wall_Builder/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create 3D wall be extruding 2D path.", + "spr":"s_node_3d_mesh_wall_builder", + "pxc_version":118010.0, "baseNode":"Node_3D_Mesh_Wall_Builder", "io":[ "d3Mesh", diff --git a/datafiles/data/Nodes/Internal/3D/Point Affector/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Point_Affector/info.json similarity index 75% rename from datafiles/data/Nodes/Internal/3D/Point Affector/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Point_Affector/info.json index 6b64e948d..c0f86f12c 100644 --- a/datafiles/data/Nodes/Internal/3D/Point Affector/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Point_Affector/info.json @@ -1,5 +1,7 @@ { "tooltip":"Generate array of 3D points interpolating between two values based on the distance.", + "spr":"s_node_3d_point_affector", + "pxc_version":11570.0, "baseNode":"Node_3D_Point_Affector", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/3D/3D Repeat/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Repeat/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/3D/3D Repeat/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Repeat/info.json index 2eb238702..3810d462e 100644 --- a/datafiles/data/Nodes/Internal/3D/3D Repeat/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Repeat/info.json @@ -1,5 +1,7 @@ { "tooltip":"Repeat the same 3D mesh multiple times.", + "spr":"s_node_3d_repeat", + "pxc_version":11510.0, "baseNode":"Node_3D_Repeat", "io":[ "d3Mesh" diff --git a/datafiles/data/Nodes/Internal/3D/Discretize vertex/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Round_Vertex/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/3D/Discretize vertex/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Round_Vertex/info.json index c69b7312a..47ae93d71 100644 --- a/datafiles/data/Nodes/Internal/3D/Discretize vertex/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Round_Vertex/info.json @@ -1,5 +1,7 @@ { "tooltip":"Round out vertex position to a specified step.", + "spr":"s_node_3d_round_vertex", + "pxc_version":11560.0, "baseNode":"Node_3D_Round_Vertex", "io":[ "d3Mesh" diff --git a/datafiles/data/Nodes/Internal/3D/3D Scene/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Scene/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/3D/3D Scene/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Scene/info.json index fb72bd112..346c19027 100644 --- a/datafiles/data/Nodes/Internal/3D/3D Scene/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Scene/info.json @@ -1,5 +1,7 @@ { "tooltip":"Combine multiple 3D objects into a single junction.", + "spr":"s_node_3d_scene", + "pxc_version":11510.0, "baseNode":"Node_3D_Scene", "io":[ "d3Mesh" diff --git a/datafiles/data/Nodes/Internal/3D/Set Material/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Set_Material/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/3D/Set Material/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Set_Material/info.json index b5531026c..ec439a102 100644 --- a/datafiles/data/Nodes/Internal/3D/Set Material/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Set_Material/info.json @@ -1,5 +1,7 @@ { "tooltip":"Replace mesh material with a new one.", + "spr":"s_node_3d_set_material", + "pxc_version":11560.0, "baseNode":"Node_3D_Set_Material", "io":[ "d3Mesh" diff --git a/datafiles/data/Nodes/Internal/3D/3D Subdivide/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Subdivide/info.json similarity index 69% rename from datafiles/data/Nodes/Internal/3D/3D Subdivide/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Subdivide/info.json index 69039fabc..50fd6756f 100644 --- a/datafiles/data/Nodes/Internal/3D/3D Subdivide/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Subdivide/info.json @@ -1,5 +1,7 @@ { "tooltip":"Subdivide faces in mesh.", + "spr":"s_node_3d_subdivide", + "pxc_version":118030.0, "baseNode":"Node_3D_Subdivide", "io":[ "d3Mesh" diff --git a/datafiles/data/Nodes/Internal/3D/Transform/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Transform/info.json similarity index 68% rename from datafiles/data/Nodes/Internal/3D/Transform/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Transform/info.json index f78607c91..410ac8971 100644 --- a/datafiles/data/Nodes/Internal/3D/Transform/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Transform/info.json @@ -1,5 +1,7 @@ { "tooltip":"Transform 3D object.", + "spr":"s_node_3d_transform", + "pxc_version":11570.0, "baseNode":"Node_3D_Transform", "io":[ "d3Mesh" diff --git a/datafiles/data/Nodes/Internal/3D/Transform 3D/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Transform_Image/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/3D/Transform 3D/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Transform_Image/info.json index 6a86261fb..4cd26a1b6 100644 --- a/datafiles/data/Nodes/Internal/3D/Transform 3D/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Transform_Image/info.json @@ -3,6 +3,8 @@ "alias":[ "3d transform" ], + "spr":"s_node_3d_transform_image", + "pxc_version":11600.0, "baseNode":"Node_3D_Transform_Image", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/3D/Transform Scene/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_Transform_Scene/info.json similarity index 74% rename from datafiles/data/Nodes/Internal/3D/Transform Scene/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_Transform_Scene/info.json index 967470345..abbfa6c46 100644 --- a/datafiles/data/Nodes/Internal/3D/Transform Scene/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_Transform_Scene/info.json @@ -1,5 +1,7 @@ { "tooltip":"Transform 3D scene, accepts array of transformations for each objects.", + "spr":"s_node_3d_transform_scene", + "pxc_version":11570.0, "baseNode":"Node_3D_Transform_Scene", "io":[ "d3Mesh" diff --git a/datafiles/data/Nodes/Internal/3D/UV Remap/info.json b/datafiles/data/Nodes/Internal/3D/Node_3D_UV_Remap/info.json similarity index 69% rename from datafiles/data/Nodes/Internal/3D/UV Remap/info.json rename to datafiles/data/Nodes/Internal/3D/Node_3D_UV_Remap/info.json index 898b7a2a7..da98d49a4 100644 --- a/datafiles/data/Nodes/Internal/3D/UV Remap/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_3D_UV_Remap/info.json @@ -1,5 +1,7 @@ { "tooltip":"Remap UV map using plane.", + "spr":"s_node_3d_uv_remap", + "pxc_version":11570.0, "baseNode":"Node_3D_UV_Remap", "io":[ "d3Mesh" diff --git a/datafiles/data/Nodes/Internal/3D/Ambient Occlusion/info.json b/datafiles/data/Nodes/Internal/3D/Node_Ambient_Occlusion/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/3D/Ambient Occlusion/info.json rename to datafiles/data/Nodes/Internal/3D/Node_Ambient_Occlusion/info.json index 3b768e18a..6703b96d3 100644 --- a/datafiles/data/Nodes/Internal/3D/Ambient Occlusion/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_Ambient_Occlusion/info.json @@ -3,6 +3,7 @@ "alias":[ "ao" ], + "spr":"s_node_ambient_occlusion", "baseNode":"Node_Ambient_Occlusion", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/3D/Bevel/info.json b/datafiles/data/Nodes/Internal/3D/Node_Bevel/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/3D/Bevel/info.json rename to datafiles/data/Nodes/Internal/3D/Node_Bevel/info.json index 949c4196e..1ff66f23e 100644 --- a/datafiles/data/Nodes/Internal/3D/Bevel/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_Bevel/info.json @@ -1,5 +1,6 @@ { "tooltip":"Apply 2D bevel on the image.", + "spr":"s_node_bevel", "baseNode":"Node_Bevel", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/3D/Normal/info.json b/datafiles/data/Nodes/Internal/3D/Node_Normal/info.json similarity index 85% rename from datafiles/data/Nodes/Internal/3D/Normal/info.json rename to datafiles/data/Nodes/Internal/3D/Node_Normal/info.json index b21200905..5f274a14b 100644 --- a/datafiles/data/Nodes/Internal/3D/Normal/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_Normal/info.json @@ -1,5 +1,6 @@ { "tooltip":"Create normal map using greyscale value as height.", + "spr":"s_node_normal", "baseNode":"Node_Normal", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/3D/Normal Light/info.json b/datafiles/data/Nodes/Internal/3D/Node_Normal_Light/info.json similarity index 82% rename from datafiles/data/Nodes/Internal/3D/Normal Light/info.json rename to datafiles/data/Nodes/Internal/3D/Node_Normal_Light/info.json index 006743e86..1eb35a8b4 100644 --- a/datafiles/data/Nodes/Internal/3D/Normal Light/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_Normal_Light/info.json @@ -1,5 +1,6 @@ { "tooltip":"Light up the image using normal mapping.", + "spr":"s_node_normal_light", "baseNode":"Node_Normal_Light", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/3D/RM Cloud/info.json b/datafiles/data/Nodes/Internal/3D/Node_RM_Cloud/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/3D/RM Cloud/info.json rename to datafiles/data/Nodes/Internal/3D/Node_RM_Cloud/info.json index 4f826566f..137cc2338 100644 --- a/datafiles/data/Nodes/Internal/3D/RM Cloud/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_RM_Cloud/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate distance field cloud texture.", + "spr":"s_node_rm_cloud", "baseNode":"Node_RM_Cloud", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/3D/RM Combine/info.json b/datafiles/data/Nodes/Internal/3D/Node_RM_Combine/info.json similarity index 78% rename from datafiles/data/Nodes/Internal/3D/RM Combine/info.json rename to datafiles/data/Nodes/Internal/3D/Node_RM_Combine/info.json index 9c90e0b87..ca8b1c70e 100644 --- a/datafiles/data/Nodes/Internal/3D/RM Combine/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_RM_Combine/info.json @@ -4,6 +4,8 @@ "ray marching", "rm boolean" ], + "spr":"s_node_rm_combine", + "pxc_version":11740.0, "baseNode":"Node_RM_Combine", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/3D/RM Primitive/info.json b/datafiles/data/Nodes/Internal/3D/Node_RM_Primitive/info.json similarity index 89% rename from datafiles/data/Nodes/Internal/3D/RM Primitive/info.json rename to datafiles/data/Nodes/Internal/3D/Node_RM_Primitive/info.json index c6d5bd752..a7e6fa44c 100644 --- a/datafiles/data/Nodes/Internal/3D/RM Primitive/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_RM_Primitive/info.json @@ -23,6 +23,8 @@ "octahedron", "pyramid" ], + "spr":"s_node_rm_primitive", + "pxc_version":11720.0, "baseNode":"Node_RM_Primitive", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/3D/RM Render/info.json b/datafiles/data/Nodes/Internal/3D/Node_RM_Render/info.json similarity index 74% rename from datafiles/data/Nodes/Internal/3D/RM Render/info.json rename to datafiles/data/Nodes/Internal/3D/Node_RM_Render/info.json index ac5c5619c..4fb911fe7 100644 --- a/datafiles/data/Nodes/Internal/3D/RM Render/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_RM_Render/info.json @@ -3,6 +3,8 @@ "alias":[ "ray marching" ], + "spr":"s_node_rm_render", + "pxc_version":11740.0, "baseNode":"Node_RM_Render", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/3D/RM Terrain/info.json b/datafiles/data/Nodes/Internal/3D/Node_RM_Terrain/info.json similarity index 76% rename from datafiles/data/Nodes/Internal/3D/RM Terrain/info.json rename to datafiles/data/Nodes/Internal/3D/Node_RM_Terrain/info.json index 4a1aa5f0f..3bac80bbf 100644 --- a/datafiles/data/Nodes/Internal/3D/RM Terrain/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_RM_Terrain/info.json @@ -3,6 +3,8 @@ "alias":[ "ray marching" ], + "spr":"s_node_rm_terrain", + "pxc_version":11720.0, "baseNode":"Node_RM_Terrain", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/3D/Sprite Stack/info.json b/datafiles/data/Nodes/Internal/3D/Node_Sprite_Stack/info.json similarity index 86% rename from datafiles/data/Nodes/Internal/3D/Sprite Stack/info.json rename to datafiles/data/Nodes/Internal/3D/Node_Sprite_Stack/info.json index 4946d6637..c8ab07a7c 100644 --- a/datafiles/data/Nodes/Internal/3D/Sprite Stack/info.json +++ b/datafiles/data/Nodes/Internal/3D/Node_Sprite_Stack/info.json @@ -1,5 +1,6 @@ { "tooltip":"Create sprite stack either from repeating a single image or stacking different images using array.", + "spr":"s_node_sprite_stack", "baseNode":"Node_Sprite_Stack", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Animation/Evaluate Curve/info.json b/datafiles/data/Nodes/Internal/Animation/Node_Anim_Curve/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Animation/Evaluate Curve/info.json rename to datafiles/data/Nodes/Internal/Animation/Node_Anim_Curve/info.json index f2f9d4542..8c2c7c0cf 100644 --- a/datafiles/data/Nodes/Internal/Animation/Evaluate Curve/info.json +++ b/datafiles/data/Nodes/Internal/Animation/Node_Anim_Curve/info.json @@ -1,5 +1,6 @@ { "tooltip":"Evaluate value from an animation curve.", + "spr":"s_node_anim_curve", "baseNode":"Node_Anim_Curve", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Animation/Audio Volume/info.json b/datafiles/data/Nodes/Internal/Animation/Node_Audio_Loudness/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/Animation/Audio Volume/info.json rename to datafiles/data/Nodes/Internal/Animation/Node_Audio_Loudness/info.json index d4b4871f5..d1e9c06d7 100644 --- a/datafiles/data/Nodes/Internal/Animation/Audio Volume/info.json +++ b/datafiles/data/Nodes/Internal/Animation/Node_Audio_Loudness/info.json @@ -1,5 +1,7 @@ { "tooltip":"Calculate volume of an audio bit array.", + "spr":"s_node_audio_loudness", + "pxc_version":11540.0, "baseNode":"Node_Audio_Loudness", "io":[ "audioBit", diff --git a/datafiles/data/Nodes/Internal/Animation/Audio Window/info.json b/datafiles/data/Nodes/Internal/Animation/Node_Audio_Window/info.json similarity index 76% rename from datafiles/data/Nodes/Internal/Animation/Audio Window/info.json rename to datafiles/data/Nodes/Internal/Animation/Node_Audio_Window/info.json index ca8a2bb39..42f2c8187 100644 --- a/datafiles/data/Nodes/Internal/Animation/Audio Window/info.json +++ b/datafiles/data/Nodes/Internal/Animation/Node_Audio_Window/info.json @@ -1,5 +1,7 @@ { "tooltip":"Take a slice of an audio array based on the current frame.", + "spr":"s_node_audio_window", + "pxc_version":1144.0, "baseNode":"Node_Audio_Window", "io":[ "audioBit", diff --git a/datafiles/data/Nodes/Internal/Animation/Frame Index/info.json b/datafiles/data/Nodes/Internal/Animation/Node_Counter/info.json similarity index 89% rename from datafiles/data/Nodes/Internal/Animation/Frame Index/info.json rename to datafiles/data/Nodes/Internal/Animation/Node_Counter/info.json index 5270580ea..b44d7ffbe 100644 --- a/datafiles/data/Nodes/Internal/Animation/Frame Index/info.json +++ b/datafiles/data/Nodes/Internal/Animation/Node_Counter/info.json @@ -4,6 +4,7 @@ "current frame", "counter" ], + "spr":"s_node_counter", "baseNode":"Node_Counter", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Animation/Delay/info.json b/datafiles/data/Nodes/Internal/Animation/Node_Delay/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/Animation/Delay/info.json rename to datafiles/data/Nodes/Internal/Animation/Node_Delay/info.json index 685db0e42..2c88700eb 100644 --- a/datafiles/data/Nodes/Internal/Animation/Delay/info.json +++ b/datafiles/data/Nodes/Internal/Animation/Node_Delay/info.json @@ -1,5 +1,7 @@ { "tooltip":"Delay the animation by fix amount of frames.", + "spr":"s_node_delay", + "pxc_version":11640.0, "baseNode":"Node_Delay", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Values/FFT/info.json b/datafiles/data/Nodes/Internal/Animation/Node_FFT/info.json similarity index 81% rename from datafiles/data/Nodes/Internal/Values/FFT/info.json rename to datafiles/data/Nodes/Internal/Animation/Node_FFT/info.json index 7a08cc9fa..e7473b761 100644 --- a/datafiles/data/Nodes/Internal/Values/FFT/info.json +++ b/datafiles/data/Nodes/Internal/Animation/Node_FFT/info.json @@ -3,6 +3,8 @@ "alias":[ "frequency analysis" ], + "spr":"s_node_fft", + "pxc_version":1144.0, "baseNode":"Node_FFT", "io":[ "float", diff --git a/datafiles/data/Nodes/Internal/Animation/Ease/info.json b/datafiles/data/Nodes/Internal/Animation/Node_Fn_Ease/info.json similarity index 68% rename from datafiles/data/Nodes/Internal/Animation/Ease/info.json rename to datafiles/data/Nodes/Internal/Animation/Node_Fn_Ease/info.json index 71595fd55..c885c3404 100644 --- a/datafiles/data/Nodes/Internal/Animation/Ease/info.json +++ b/datafiles/data/Nodes/Internal/Animation/Node_Fn_Ease/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create easing function.", + "spr":"s_node_fn_ease", + "pxc_version":11720.0, "baseNode":"Node_Fn_Ease", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Animation/Math/info.json b/datafiles/data/Nodes/Internal/Animation/Node_Fn_Math/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Animation/Math/info.json rename to datafiles/data/Nodes/Internal/Animation/Node_Fn_Math/info.json index 29c4a0e69..e6666b089 100644 --- a/datafiles/data/Nodes/Internal/Animation/Math/info.json +++ b/datafiles/data/Nodes/Internal/Animation/Node_Fn_Math/info.json @@ -1,5 +1,7 @@ { "tooltip":"Apply mathematic operation of wave value.", + "spr":"s_node_fn_math", + "pxc_version":11720.0, "baseNode":"Node_Fn_Math", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Animation/SmoothStep/info.json b/datafiles/data/Nodes/Internal/Animation/Node_Fn_SmoothStep/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/Animation/SmoothStep/info.json rename to datafiles/data/Nodes/Internal/Animation/Node_Fn_SmoothStep/info.json index 19f8a6607..03067087f 100644 --- a/datafiles/data/Nodes/Internal/Animation/SmoothStep/info.json +++ b/datafiles/data/Nodes/Internal/Animation/Node_Fn_SmoothStep/info.json @@ -1,5 +1,7 @@ { "tooltip":"Apply smoothstop function to a value.", + "spr":"s_node_fn_smoothstep", + "pxc_version":11720.0, "baseNode":"Node_Fn_SmoothStep", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Animation/WaveTable/info.json b/datafiles/data/Nodes/Internal/Animation/Node_Fn_WaveTable/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Animation/WaveTable/info.json rename to datafiles/data/Nodes/Internal/Animation/Node_Fn_WaveTable/info.json index 8ba7552d2..a616d5c78 100644 --- a/datafiles/data/Nodes/Internal/Animation/WaveTable/info.json +++ b/datafiles/data/Nodes/Internal/Animation/Node_Fn_WaveTable/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create value changing overtime in wave pattern.", + "spr":"s_node_fn_wavetable", + "pxc_version":11720.0, "baseNode":"Node_Fn_WaveTable", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Generate/Draw Bar Graph/info.json b/datafiles/data/Nodes/Internal/Animation/Node_Plot_Linear/info.json similarity index 84% rename from datafiles/data/Nodes/Internal/Generate/Draw Bar Graph/info.json rename to datafiles/data/Nodes/Internal/Animation/Node_Plot_Linear/info.json index 44786f93a..3e4174044 100644 --- a/datafiles/data/Nodes/Internal/Generate/Draw Bar Graph/info.json +++ b/datafiles/data/Nodes/Internal/Animation/Node_Plot_Linear/info.json @@ -6,6 +6,8 @@ "graph", "waveform" ], + "spr":"s_node_plot_linear", + "pxc_version":1144.0, "baseNode":"Node_Plot_Linear", "io":[ "surface", diff --git a/datafiles/data/Nodes/Internal/Animation/Rate Remap/info.json b/datafiles/data/Nodes/Internal/Animation/Node_Rate_Remap/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Animation/Rate Remap/info.json rename to datafiles/data/Nodes/Internal/Animation/Node_Rate_Remap/info.json index 0f3b32108..cbb6abfd0 100644 --- a/datafiles/data/Nodes/Internal/Animation/Rate Remap/info.json +++ b/datafiles/data/Nodes/Internal/Animation/Node_Rate_Remap/info.json @@ -1,5 +1,7 @@ { "tooltip":"Remap animation to a new framerate.", + "spr":"s_node_rate_remap", + "pxc_version":1147.0, "baseNode":"Node_Rate_Remap", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Animation/Reverse/info.json b/datafiles/data/Nodes/Internal/Animation/Node_Revert/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/Animation/Reverse/info.json rename to datafiles/data/Nodes/Internal/Animation/Node_Revert/info.json index 37250a305..f9c833237 100644 --- a/datafiles/data/Nodes/Internal/Animation/Reverse/info.json +++ b/datafiles/data/Nodes/Internal/Animation/Node_Revert/info.json @@ -1,5 +1,7 @@ { "tooltip":"Cache the entire animation and replay backward.", + "spr":"s_node_revert", + "pxc_version":117110.0, "baseNode":"Node_Revert", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Animation/Stagger/info.json b/datafiles/data/Nodes/Internal/Animation/Node_Stagger/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Animation/Stagger/info.json rename to datafiles/data/Nodes/Internal/Animation/Node_Stagger/info.json index 347eb4c8d..3151c2977 100644 --- a/datafiles/data/Nodes/Internal/Animation/Stagger/info.json +++ b/datafiles/data/Nodes/Internal/Animation/Node_Stagger/info.json @@ -1,5 +1,7 @@ { "tooltip":"Delay the animation based on array index.", + "spr":"s_node_stagger", + "pxc_version":11640.0, "baseNode":"Node_Stagger", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/IO/WAV File In/info.json b/datafiles/data/Nodes/Internal/Animation/Node_WAV_File_Read/info.json similarity index 78% rename from datafiles/data/Nodes/Internal/IO/WAV File In/info.json rename to datafiles/data/Nodes/Internal/Animation/Node_WAV_File_Read/info.json index 65372d01a..162e42051 100644 --- a/datafiles/data/Nodes/Internal/IO/WAV File In/info.json +++ b/datafiles/data/Nodes/Internal/Animation/Node_WAV_File_Read/info.json @@ -1,5 +1,7 @@ { "tooltip":"Load wav audio file.", + "spr":"s_node_wav_file_read", + "pxc_version":1144.0, "baseNode":"Node_WAV_File_Read", "io":[ "text", diff --git a/datafiles/data/Nodes/Internal/Animation/WAV File Out/info.json b/datafiles/data/Nodes/Internal/Animation/Node_WAV_File_Write/info.json similarity index 74% rename from datafiles/data/Nodes/Internal/Animation/WAV File Out/info.json rename to datafiles/data/Nodes/Internal/Animation/Node_WAV_File_Write/info.json index 085bae1bd..bc0607e55 100644 --- a/datafiles/data/Nodes/Internal/Animation/WAV File Out/info.json +++ b/datafiles/data/Nodes/Internal/Animation/Node_WAV_File_Write/info.json @@ -1,5 +1,7 @@ { "tooltip":"Save wav audio file.", + "spr":"s_node_wav_file_write", + "pxc_version":1145.0, "baseNode":"Node_WAV_File_Write", "io":[ "text", diff --git a/datafiles/data/Nodes/Internal/Animation/Wiggler/info.json b/datafiles/data/Nodes/Internal/Animation/Node_Wiggler/info.json similarity index 84% rename from datafiles/data/Nodes/Internal/Animation/Wiggler/info.json rename to datafiles/data/Nodes/Internal/Animation/Node_Wiggler/info.json index bcbeabffd..46cac4392 100644 --- a/datafiles/data/Nodes/Internal/Animation/Wiggler/info.json +++ b/datafiles/data/Nodes/Internal/Animation/Node_Wiggler/info.json @@ -1,5 +1,6 @@ { "tooltip":"Create random value smoothly changing over time.", + "spr":"s_node_wiggler", "baseNode":"Node_Wiggler", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Color/Color/info.json b/datafiles/data/Nodes/Internal/Color/Node_Color/info.json similarity index 79% rename from datafiles/data/Nodes/Internal/Color/Color/info.json rename to datafiles/data/Nodes/Internal/Color/Node_Color/info.json index 7d421be12..43589f06e 100644 --- a/datafiles/data/Nodes/Internal/Color/Color/info.json +++ b/datafiles/data/Nodes/Internal/Color/Node_Color/info.json @@ -1,5 +1,6 @@ { "tooltip":"Create color value.", + "spr":"s_node_color_out", "baseNode":"Node_Color", "io":[ "color" diff --git a/datafiles/data/Nodes/Internal/Color/Color Data/info.json b/datafiles/data/Nodes/Internal/Color/Node_Color_Data/info.json similarity index 89% rename from datafiles/data/Nodes/Internal/Color/Color Data/info.json rename to datafiles/data/Nodes/Internal/Color/Node_Color_Data/info.json index bac7e1394..b81065cd7 100644 --- a/datafiles/data/Nodes/Internal/Color/Color Data/info.json +++ b/datafiles/data/Nodes/Internal/Color/Node_Color_Data/info.json @@ -8,6 +8,7 @@ "brightness", "luminance" ], + "spr":"s_node_color_data", "baseNode":"Node_Color_Data", "io":[ "color" diff --git a/datafiles/data/Nodes/Internal/Color/HSV Color/info.json b/datafiles/data/Nodes/Internal/Color/Node_Color_HSV/info.json similarity index 81% rename from datafiles/data/Nodes/Internal/Color/HSV Color/info.json rename to datafiles/data/Nodes/Internal/Color/Node_Color_HSV/info.json index 5544e93b1..5b5844f60 100644 --- a/datafiles/data/Nodes/Internal/Color/HSV Color/info.json +++ b/datafiles/data/Nodes/Internal/Color/Node_Color_HSV/info.json @@ -1,5 +1,6 @@ { "tooltip":"Create (rgb) color from value in HSV color space.", + "spr":"s_node_color_from_hsv", "baseNode":"Node_Color_HSV", "io":[ "color" diff --git a/datafiles/data/Nodes/Internal/Color/Mix Color/info.json b/datafiles/data/Nodes/Internal/Color/Node_Color_Mix/info.json similarity index 69% rename from datafiles/data/Nodes/Internal/Color/Mix Color/info.json rename to datafiles/data/Nodes/Internal/Color/Node_Color_Mix/info.json index 4954669fe..a87680416 100644 --- a/datafiles/data/Nodes/Internal/Color/Mix Color/info.json +++ b/datafiles/data/Nodes/Internal/Color/Node_Color_Mix/info.json @@ -1,5 +1,7 @@ { "tooltip":"Combine two colors.", + "spr":"s_node_color_mix", + "pxc_version":1140.0, "baseNode":"Node_Color_Mix", "io":[ "color" diff --git a/datafiles/data/Nodes/Internal/Color/OKLCH Color/info.json b/datafiles/data/Nodes/Internal/Color/Node_Color_OKLCH/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Color/OKLCH Color/info.json rename to datafiles/data/Nodes/Internal/Color/Node_Color_OKLCH/info.json index 7c1d3a687..ed0ed7f61 100644 --- a/datafiles/data/Nodes/Internal/Color/OKLCH Color/info.json +++ b/datafiles/data/Nodes/Internal/Color/Node_Color_OKLCH/info.json @@ -3,6 +3,7 @@ "alias":[ "oklab" ], + "spr":"s_node_color_from_oklch", "baseNode":"Node_Color_OKLCH", "io":[ "color" diff --git a/datafiles/data/Nodes/Internal/Color/RGB Color/info.json b/datafiles/data/Nodes/Internal/Color/Node_Color_RGB/info.json similarity index 81% rename from datafiles/data/Nodes/Internal/Color/RGB Color/info.json rename to datafiles/data/Nodes/Internal/Color/Node_Color_RGB/info.json index f90e703a5..6c2ecb936 100644 --- a/datafiles/data/Nodes/Internal/Color/RGB Color/info.json +++ b/datafiles/data/Nodes/Internal/Color/Node_Color_RGB/info.json @@ -1,5 +1,6 @@ { "tooltip":"Create (rgb) color from value in RGB color space.", + "spr":"s_node_color_from_rgb", "baseNode":"Node_Color_RGB", "io":[ "color" diff --git a/datafiles/data/Nodes/Internal/Color/Find pixel/info.json b/datafiles/data/Nodes/Internal/Color/Node_Find_Pixel/info.json similarity index 77% rename from datafiles/data/Nodes/Internal/Color/Find pixel/info.json rename to datafiles/data/Nodes/Internal/Color/Node_Find_Pixel/info.json index adb40f770..84ad82d47 100644 --- a/datafiles/data/Nodes/Internal/Color/Find pixel/info.json +++ b/datafiles/data/Nodes/Internal/Color/Node_Find_Pixel/info.json @@ -1,5 +1,7 @@ { "tooltip":"Get the position of the first pixel with a given color.", + "spr":"s_node_find_pixel", + "pxc_version":1130.0, "baseNode":"Node_Find_Pixel", "io":[ "color", diff --git a/datafiles/data/Nodes/Internal/Color/Gradient Data/info.json b/datafiles/data/Nodes/Internal/Color/Node_Gradient_Extract/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/Color/Gradient Data/info.json rename to datafiles/data/Nodes/Internal/Color/Node_Gradient_Extract/info.json index 839362abb..16b6557e4 100644 --- a/datafiles/data/Nodes/Internal/Color/Gradient Data/info.json +++ b/datafiles/data/Nodes/Internal/Color/Node_Gradient_Extract/info.json @@ -1,5 +1,7 @@ { "tooltip":"Get palatte and array of key positions from gradient.", + "spr":"s_node_gradient_extract", + "pxc_version":1135.0, "baseNode":"Node_Gradient_Extract", "io":[ "gradient" diff --git a/datafiles/data/Nodes/Internal/Color/Gradient/info.json b/datafiles/data/Nodes/Internal/Color/Node_Gradient_Out/info.json similarity index 80% rename from datafiles/data/Nodes/Internal/Color/Gradient/info.json rename to datafiles/data/Nodes/Internal/Color/Node_Gradient_Out/info.json index e05e9b908..67d51f913 100644 --- a/datafiles/data/Nodes/Internal/Color/Gradient/info.json +++ b/datafiles/data/Nodes/Internal/Color/Node_Gradient_Out/info.json @@ -1,5 +1,6 @@ { "tooltip":"Create gradient object", + "spr":"s_node_gradient_out", "baseNode":"Node_Gradient_Out", "io":[ "gradient" diff --git a/datafiles/data/Nodes/Internal/Color/Palette to Gradient/info.json b/datafiles/data/Nodes/Internal/Color/Node_Gradient_Palette/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Color/Palette to Gradient/info.json rename to datafiles/data/Nodes/Internal/Color/Node_Gradient_Palette/info.json index 9def1e818..3b074e174 100644 --- a/datafiles/data/Nodes/Internal/Color/Palette to Gradient/info.json +++ b/datafiles/data/Nodes/Internal/Color/Node_Gradient_Palette/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create gradient from palette.", + "spr":"s_node_gradient_palette", + "pxc_version":1135.0, "baseNode":"Node_Gradient_Palette", "io":[ "gradient" diff --git a/datafiles/data/Nodes/Internal/Color/Gradient Replace/info.json b/datafiles/data/Nodes/Internal/Color/Node_Gradient_Replace_Color/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/Color/Gradient Replace/info.json rename to datafiles/data/Nodes/Internal/Color/Node_Gradient_Replace_Color/info.json index 0c447853a..e061b4678 100644 --- a/datafiles/data/Nodes/Internal/Color/Gradient Replace/info.json +++ b/datafiles/data/Nodes/Internal/Color/Node_Gradient_Replace_Color/info.json @@ -1,5 +1,7 @@ { "tooltip":"Replace color inside a gradient.", + "spr":"s_node_gradient_replace_color", + "pxc_version":1135.0, "baseNode":"Node_Gradient_Replace_Color", "io":[ "gradient" diff --git a/datafiles/data/Nodes/Internal/Color/Sample Gradient/info.json b/datafiles/data/Nodes/Internal/Color/Node_Gradient_Sample/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Color/Sample Gradient/info.json rename to datafiles/data/Nodes/Internal/Color/Node_Gradient_Sample/info.json index 238d7bd0c..4ad7ec932 100644 --- a/datafiles/data/Nodes/Internal/Color/Sample Gradient/info.json +++ b/datafiles/data/Nodes/Internal/Color/Node_Gradient_Sample/info.json @@ -1,5 +1,7 @@ { "tooltip":"Sample gradient into palette.", + "spr":"s_node_gradient_sample", + "pxc_version":118041.0, "baseNode":"Node_Gradient_Sample", "io":[ "gradient", diff --git a/datafiles/data/Nodes/Internal/Color/Gradient Shift/info.json b/datafiles/data/Nodes/Internal/Color/Node_Gradient_Shift/info.json similarity index 79% rename from datafiles/data/Nodes/Internal/Color/Gradient Shift/info.json rename to datafiles/data/Nodes/Internal/Color/Node_Gradient_Shift/info.json index 6dab47e5d..aaf681814 100644 --- a/datafiles/data/Nodes/Internal/Color/Gradient Shift/info.json +++ b/datafiles/data/Nodes/Internal/Color/Node_Gradient_Shift/info.json @@ -1,5 +1,6 @@ { "tooltip":"Move gradients keys.", + "spr":"s_node_gradient_shift", "baseNode":"Node_Gradient_Shift", "io":[ "gradient" diff --git a/datafiles/data/Nodes/Internal/Color/Palette/info.json b/datafiles/data/Nodes/Internal/Color/Node_Palette/info.json similarity index 86% rename from datafiles/data/Nodes/Internal/Color/Palette/info.json rename to datafiles/data/Nodes/Internal/Color/Node_Palette/info.json index a6c12b35e..45385dcf7 100644 --- a/datafiles/data/Nodes/Internal/Color/Palette/info.json +++ b/datafiles/data/Nodes/Internal/Color/Node_Palette/info.json @@ -1,5 +1,6 @@ { "tooltip":"Create palette value. Note that palette is simple an array of colors.", + "spr":"s_node_palette", "baseNode":"Node_Palette", "io":[ "color" diff --git a/datafiles/data/Nodes/Internal/Color/Palette Extract/info.json b/datafiles/data/Nodes/Internal/Color/Node_Palette_Extract/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/Color/Palette Extract/info.json rename to datafiles/data/Nodes/Internal/Color/Node_Palette_Extract/info.json index 21b006db2..8c006c1fb 100644 --- a/datafiles/data/Nodes/Internal/Color/Palette Extract/info.json +++ b/datafiles/data/Nodes/Internal/Color/Node_Palette_Extract/info.json @@ -1,5 +1,7 @@ { "tooltip":"Extract palette from an image.", + "spr":"s_node_palette_extract", + "pxc_version":1100.0, "baseNode":"Node_Palette_Extract", "io":[ "color" diff --git a/datafiles/data/Nodes/Internal/Color/Palette Replace/info.json b/datafiles/data/Nodes/Internal/Color/Node_Palette_Replace/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Color/Palette Replace/info.json rename to datafiles/data/Nodes/Internal/Color/Node_Palette_Replace/info.json index 25357d474..9a1098451 100644 --- a/datafiles/data/Nodes/Internal/Color/Palette Replace/info.json +++ b/datafiles/data/Nodes/Internal/Color/Node_Palette_Replace/info.json @@ -1,5 +1,7 @@ { "tooltip":"Replace colors in a palette with new one.", + "spr":"s_node_palette_replace", + "pxc_version":1120.0, "baseNode":"Node_Palette_Replace", "io":[ "color" diff --git a/datafiles/data/Nodes/Internal/Color/Shrink Palette/info.json b/datafiles/data/Nodes/Internal/Color/Node_Palette_Shrink/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Color/Shrink Palette/info.json rename to datafiles/data/Nodes/Internal/Color/Node_Palette_Shrink/info.json index f5346da28..64d7001e6 100644 --- a/datafiles/data/Nodes/Internal/Color/Shrink Palette/info.json +++ b/datafiles/data/Nodes/Internal/Color/Node_Palette_Shrink/info.json @@ -1,5 +1,7 @@ { "tooltip":"Reduce palette size by collapsing similiar colors.", + "spr":"s_node_palette_shrink", + "pxc_version":118030.0, "baseNode":"Node_Palette_Shrink", "io":[ "color" diff --git a/datafiles/data/Nodes/Internal/Color/Sort Palette/info.json b/datafiles/data/Nodes/Internal/Color/Node_Palette_Sort/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Color/Sort Palette/info.json rename to datafiles/data/Nodes/Internal/Color/Node_Palette_Sort/info.json index a8f3e286a..b50bf12e3 100644 --- a/datafiles/data/Nodes/Internal/Color/Sort Palette/info.json +++ b/datafiles/data/Nodes/Internal/Color/Node_Palette_Sort/info.json @@ -1,5 +1,7 @@ { "tooltip":"Sort palette with specified order.", + "spr":"s_node_palette_sort", + "pxc_version":1130.0, "baseNode":"Node_Palette_Sort", "io":[ "color" diff --git a/datafiles/data/Nodes/Internal/Color/Sampler/info.json b/datafiles/data/Nodes/Internal/Color/Node_Sampler/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Color/Sampler/info.json rename to datafiles/data/Nodes/Internal/Color/Node_Sampler/info.json index a7cdddd2e..d39498423 100644 --- a/datafiles/data/Nodes/Internal/Color/Sampler/info.json +++ b/datafiles/data/Nodes/Internal/Color/Node_Sampler/info.json @@ -1,5 +1,6 @@ { "tooltip":"Sample color from an image.", + "spr":"s_node_sampler", "baseNode":"Node_Sampler", "io":[ "color", diff --git a/datafiles/data/Nodes/Internal/Compose/Armature Create/info.json b/datafiles/data/Nodes/Internal/Compose/Node_Armature/info.json similarity index 77% rename from datafiles/data/Nodes/Internal/Compose/Armature Create/info.json rename to datafiles/data/Nodes/Internal/Compose/Node_Armature/info.json index b727a2f32..f203b7041 100644 --- a/datafiles/data/Nodes/Internal/Compose/Armature Create/info.json +++ b/datafiles/data/Nodes/Internal/Compose/Node_Armature/info.json @@ -4,6 +4,8 @@ "rigging", "bone" ], + "spr":"s_node_armature", + "pxc_version":1146.0, "baseNode":"Node_Armature", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Compose/Armature Bind/info.json b/datafiles/data/Nodes/Internal/Compose/Node_Armature_Bind/info.json similarity index 77% rename from datafiles/data/Nodes/Internal/Compose/Armature Bind/info.json rename to datafiles/data/Nodes/Internal/Compose/Node_Armature_Bind/info.json index 2c2dcc71a..644f0a231 100644 --- a/datafiles/data/Nodes/Internal/Compose/Armature Bind/info.json +++ b/datafiles/data/Nodes/Internal/Compose/Node_Armature_Bind/info.json @@ -4,6 +4,8 @@ "rigging", "bone" ], + "spr":"s_node_armature_bind", + "pxc_version":1146.0, "baseNode":"Node_Armature_Bind", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Compose/Armature Mesh Rig/info.json b/datafiles/data/Nodes/Internal/Compose/Node_Armature_Mesh_Rig/info.json similarity index 75% rename from datafiles/data/Nodes/Internal/Compose/Armature Mesh Rig/info.json rename to datafiles/data/Nodes/Internal/Compose/Node_Armature_Mesh_Rig/info.json index 40954e2f1..b68e5d110 100644 --- a/datafiles/data/Nodes/Internal/Compose/Armature Mesh Rig/info.json +++ b/datafiles/data/Nodes/Internal/Compose/Node_Armature_Mesh_Rig/info.json @@ -4,6 +4,8 @@ "rigging", "bone" ], + "spr":"s_node_armature_mesh_rig", + "pxc_version":118040.0, "baseNode":"Node_Armature_Mesh_Rig", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Compose/Armature Path/info.json b/datafiles/data/Nodes/Internal/Compose/Node_Armature_Path/info.json similarity index 76% rename from datafiles/data/Nodes/Internal/Compose/Armature Path/info.json rename to datafiles/data/Nodes/Internal/Compose/Node_Armature_Path/info.json index bf87a3c47..f05aa0abd 100644 --- a/datafiles/data/Nodes/Internal/Compose/Armature Path/info.json +++ b/datafiles/data/Nodes/Internal/Compose/Node_Armature_Path/info.json @@ -4,6 +4,8 @@ "rigging", "bone" ], + "spr":"s_node_armature_path", + "pxc_version":1146.0, "baseNode":"Node_Armature_Path", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Compose/Armature Pose/info.json b/datafiles/data/Nodes/Internal/Compose/Node_Armature_Pose/info.json similarity index 75% rename from datafiles/data/Nodes/Internal/Compose/Armature Pose/info.json rename to datafiles/data/Nodes/Internal/Compose/Node_Armature_Pose/info.json index 186ead66d..840d6b427 100644 --- a/datafiles/data/Nodes/Internal/Compose/Armature Pose/info.json +++ b/datafiles/data/Nodes/Internal/Compose/Node_Armature_Pose/info.json @@ -4,6 +4,8 @@ "rigging", "bone" ], + "spr":"s_node_armature_pose", + "pxc_version":1146.0, "baseNode":"Node_Armature_Pose", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Compose/Armature Sample/info.json b/datafiles/data/Nodes/Internal/Compose/Node_Armature_Sample/info.json similarity index 76% rename from datafiles/data/Nodes/Internal/Compose/Armature Sample/info.json rename to datafiles/data/Nodes/Internal/Compose/Node_Armature_Sample/info.json index 68fd4447d..dabe23fcd 100644 --- a/datafiles/data/Nodes/Internal/Compose/Armature Sample/info.json +++ b/datafiles/data/Nodes/Internal/Compose/Node_Armature_Sample/info.json @@ -4,6 +4,8 @@ "rigging", "bone" ], + "spr":"s_node_armature_sample", + "pxc_version":1147.0, "baseNode":"Node_Armature_Sample", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Compose/Blend/info.json b/datafiles/data/Nodes/Internal/Compose/Node_Blend/info.json similarity index 96% rename from datafiles/data/Nodes/Internal/Compose/Blend/info.json rename to datafiles/data/Nodes/Internal/Compose/Node_Blend/info.json index 4a1ee8cf5..53e391e38 100644 --- a/datafiles/data/Nodes/Internal/Compose/Blend/info.json +++ b/datafiles/data/Nodes/Internal/Compose/Node_Blend/info.json @@ -30,6 +30,7 @@ "saturation", "luminosity" ], + "spr":"s_node_blend", "baseNode":"Node_Blend", "io":[ "surface", diff --git a/datafiles/data/Nodes/Internal/Compose/Camera/info.json b/datafiles/data/Nodes/Internal/Compose/Node_Camera/info.json similarity index 89% rename from datafiles/data/Nodes/Internal/Compose/Camera/info.json rename to datafiles/data/Nodes/Internal/Compose/Node_Camera/info.json index 3958537c5..63dc92c9d 100644 --- a/datafiles/data/Nodes/Internal/Compose/Camera/info.json +++ b/datafiles/data/Nodes/Internal/Compose/Node_Camera/info.json @@ -1,5 +1,6 @@ { "tooltip":"Create camera that crop image to fix dimension with control of position, zoom. Also can be use to create parallax effect.", + "spr":"s_node_camera", "baseNode":"Node_Camera", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Compose/Composite/info.json b/datafiles/data/Nodes/Internal/Compose/Node_Composite/info.json similarity index 87% rename from datafiles/data/Nodes/Internal/Compose/Composite/info.json rename to datafiles/data/Nodes/Internal/Compose/Node_Composite/info.json index 9b02dc178..f9696e9a3 100644 --- a/datafiles/data/Nodes/Internal/Compose/Composite/info.json +++ b/datafiles/data/Nodes/Internal/Compose/Node_Composite/info.json @@ -3,6 +3,7 @@ "alias":[ "merge" ], + "spr":"s_node_composite", "baseNode":"Node_Composite", "io":[ "surface", diff --git a/datafiles/data/Nodes/Internal/IO/Export/info.json b/datafiles/data/Nodes/Internal/Compose/Node_Export/info.json similarity index 87% rename from datafiles/data/Nodes/Internal/IO/Export/info.json rename to datafiles/data/Nodes/Internal/Compose/Node_Export/info.json index 0aecbb7c5..17d628148 100644 --- a/datafiles/data/Nodes/Internal/IO/Export/info.json +++ b/datafiles/data/Nodes/Internal/Compose/Node_Export/info.json @@ -1,5 +1,6 @@ { "tooltip":"Export image\/animation to file(s).", + "spr":"s_node_export", "baseNode":"Node_Export", "io":[ "surface", diff --git a/datafiles/data/Nodes/Internal/Compose/Image Grid/info.json b/datafiles/data/Nodes/Internal/Compose/Node_Image_Grid/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/Compose/Image Grid/info.json rename to datafiles/data/Nodes/Internal/Compose/Node_Image_Grid/info.json index 94ac8bdc1..534c1de61 100644 --- a/datafiles/data/Nodes/Internal/Compose/Image Grid/info.json +++ b/datafiles/data/Nodes/Internal/Compose/Node_Image_Grid/info.json @@ -1,5 +1,7 @@ { "tooltip":"Place image next to each other in grid pattern.", + "spr":"s_node_image_grid", + "pxc_version":11640.0, "baseNode":"Node_Image_Grid", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Compose/Pack Sprites/info.json b/datafiles/data/Nodes/Internal/Compose/Node_Pack_Sprites/info.json similarity index 76% rename from datafiles/data/Nodes/Internal/Compose/Pack Sprites/info.json rename to datafiles/data/Nodes/Internal/Compose/Node_Pack_Sprites/info.json index 8da5d6edc..7abfafd2b 100644 --- a/datafiles/data/Nodes/Internal/Compose/Pack Sprites/info.json +++ b/datafiles/data/Nodes/Internal/Compose/Node_Pack_Sprites/info.json @@ -1,5 +1,7 @@ { "tooltip":"Combine array of images with different dimension using different algorithms.", + "spr":"s_node_pack_sprites", + "pxc_version":1140.0, "baseNode":"Node_Pack_Sprites", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Compose/Render Spritesheet/info.json b/datafiles/data/Nodes/Internal/Compose/Node_Render_Sprite_Sheet/info.json similarity index 81% rename from datafiles/data/Nodes/Internal/Compose/Render Spritesheet/info.json rename to datafiles/data/Nodes/Internal/Compose/Node_Render_Sprite_Sheet/info.json index 7256b9e6e..b11378cbf 100644 --- a/datafiles/data/Nodes/Internal/Compose/Render Spritesheet/info.json +++ b/datafiles/data/Nodes/Internal/Compose/Node_Render_Sprite_Sheet/info.json @@ -1,5 +1,6 @@ { "tooltip":"Create spritesheet from image array or animation.", + "spr":"s_node_render_sprite_sheet", "baseNode":"Node_Render_Sprite_Sheet", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Compose/Stack/info.json b/datafiles/data/Nodes/Internal/Compose/Node_Stack/info.json similarity index 76% rename from datafiles/data/Nodes/Internal/Compose/Stack/info.json rename to datafiles/data/Nodes/Internal/Compose/Node_Stack/info.json index f82aac908..1e9e23fa9 100644 --- a/datafiles/data/Nodes/Internal/Compose/Stack/info.json +++ b/datafiles/data/Nodes/Internal/Compose/Node_Stack/info.json @@ -1,5 +1,7 @@ { "tooltip":"Place image next to each other linearly, or on top of each other.", + "spr":"s_node_stack", + "pxc_version":1070.0, "baseNode":"Node_Stack", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Custom/Node_Custom/info.json b/datafiles/data/Nodes/Internal/Custom/Node_Custom/info.json new file mode 100644 index 000000000..18061718c --- /dev/null +++ b/datafiles/data/Nodes/Internal/Custom/Node_Custom/info.json @@ -0,0 +1,9 @@ +{ + "tooltip":"Custom node", + "spr":"__newsprite1112", + "baseNode":"Node_Custom", + "io":[ + ], + "build":"Node_create_Custom", + "name":"Custom" +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Extra/Ambient Occlusion/info.json b/datafiles/data/Nodes/Internal/Extra/Node_Ambient_Occlusion/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Extra/Ambient Occlusion/info.json rename to datafiles/data/Nodes/Internal/Extra/Node_Ambient_Occlusion/info.json index 3b768e18a..6703b96d3 100644 --- a/datafiles/data/Nodes/Internal/Extra/Ambient Occlusion/info.json +++ b/datafiles/data/Nodes/Internal/Extra/Node_Ambient_Occlusion/info.json @@ -3,6 +3,7 @@ "alias":[ "ao" ], + "spr":"s_node_ambient_occlusion", "baseNode":"Node_Ambient_Occlusion", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Extra/Brush/info.json b/datafiles/data/Nodes/Internal/Extra/Node_Brush_Linear/info.json similarity index 79% rename from datafiles/data/Nodes/Internal/Extra/Brush/info.json rename to datafiles/data/Nodes/Internal/Extra/Node_Brush_Linear/info.json index 1c301fe28..1310f2503 100644 --- a/datafiles/data/Nodes/Internal/Extra/Brush/info.json +++ b/datafiles/data/Nodes/Internal/Extra/Node_Brush_Linear/info.json @@ -1,5 +1,6 @@ { "tooltip":"Apply brush effect.", + "spr":"s_node_brush_linear", "baseNode":"Node_Brush_Linear", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Extra/Caustic/info.json b/datafiles/data/Nodes/Internal/Extra/Node_Caustic/info.json similarity index 81% rename from datafiles/data/Nodes/Internal/Extra/Caustic/info.json rename to datafiles/data/Nodes/Internal/Extra/Node_Caustic/info.json index 797a85292..731d7ee6a 100644 --- a/datafiles/data/Nodes/Internal/Extra/Caustic/info.json +++ b/datafiles/data/Nodes/Internal/Extra/Node_Caustic/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate caustic noise", + "spr":"s_node_caustic", "baseNode":"Node_Caustic", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Extra/Flow Noise/info.json b/datafiles/data/Nodes/Internal/Extra/Node_Flow_Noise/info.json similarity index 81% rename from datafiles/data/Nodes/Internal/Extra/Flow Noise/info.json rename to datafiles/data/Nodes/Internal/Extra/Node_Flow_Noise/info.json index b0f111899..d9dc187dd 100644 --- a/datafiles/data/Nodes/Internal/Extra/Flow Noise/info.json +++ b/datafiles/data/Nodes/Internal/Extra/Node_Flow_Noise/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate fluid flow noise", + "spr":"s_node_flow_noise", "baseNode":"Node_Flow_Noise", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Extra/Gabor Noise/info.json b/datafiles/data/Nodes/Internal/Extra/Node_Gabor_Noise/info.json similarity index 80% rename from datafiles/data/Nodes/Internal/Extra/Gabor Noise/info.json rename to datafiles/data/Nodes/Internal/Extra/Node_Gabor_Noise/info.json index c890fb292..5def95504 100644 --- a/datafiles/data/Nodes/Internal/Extra/Gabor Noise/info.json +++ b/datafiles/data/Nodes/Internal/Extra/Node_Gabor_Noise/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate Gabor noise", + "spr":"s_node_gabor_noise", "baseNode":"Node_Gabor_Noise", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Extra/Pentagonal Grid/info.json b/datafiles/data/Nodes/Internal/Extra/Node_Grid_Pentagonal/info.json similarity index 80% rename from datafiles/data/Nodes/Internal/Extra/Pentagonal Grid/info.json rename to datafiles/data/Nodes/Internal/Extra/Node_Grid_Pentagonal/info.json index 5ce6fa3e9..0ba4535ca 100644 --- a/datafiles/data/Nodes/Internal/Extra/Pentagonal Grid/info.json +++ b/datafiles/data/Nodes/Internal/Extra/Node_Grid_Pentagonal/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate Pentagonal grid pattern.", + "spr":"s_node_grid_pentagonal", "baseNode":"Node_Grid_Pentagonal", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Extra/Herringbone Tile/info.json b/datafiles/data/Nodes/Internal/Extra/Node_Herringbone_Tile/info.json similarity index 80% rename from datafiles/data/Nodes/Internal/Extra/Herringbone Tile/info.json rename to datafiles/data/Nodes/Internal/Extra/Node_Herringbone_Tile/info.json index fb6330e34..aa07191e5 100644 --- a/datafiles/data/Nodes/Internal/Extra/Herringbone Tile/info.json +++ b/datafiles/data/Nodes/Internal/Extra/Node_Herringbone_Tile/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate Herringbone tile pattern.", + "spr":"s_node_herringbone_tile", "baseNode":"Node_Herringbone_Tile", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Extra/Honeycomb Noise/info.json b/datafiles/data/Nodes/Internal/Extra/Node_Honeycomb_Noise/info.json similarity index 79% rename from datafiles/data/Nodes/Internal/Extra/Honeycomb Noise/info.json rename to datafiles/data/Nodes/Internal/Extra/Node_Honeycomb_Noise/info.json index 02e0708e6..5c26fa23b 100644 --- a/datafiles/data/Nodes/Internal/Extra/Honeycomb Noise/info.json +++ b/datafiles/data/Nodes/Internal/Extra/Node_Honeycomb_Noise/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate honeycomb noise", + "spr":"s_node_honeycomb_noise", "baseNode":"Node_Honeycomb_Noise", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Extra/MK Fracture/info.json b/datafiles/data/Nodes/Internal/Extra/Node_MK_Fracture/info.json similarity index 84% rename from datafiles/data/Nodes/Internal/Extra/MK Fracture/info.json rename to datafiles/data/Nodes/Internal/Extra/Node_MK_Fracture/info.json index a84c526c0..892c1e670 100644 --- a/datafiles/data/Nodes/Internal/Extra/MK Fracture/info.json +++ b/datafiles/data/Nodes/Internal/Extra/Node_MK_Fracture/info.json @@ -1,5 +1,6 @@ { "tooltip":"Deterministically fracture and image and apply basic physics.", + "spr":"s_node_mk_fracture", "baseNode":"Node_MK_Fracture", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Extra/MK Sparkle/info.json b/datafiles/data/Nodes/Internal/Extra/Node_MK_Sparkle/info.json similarity index 81% rename from datafiles/data/Nodes/Internal/Extra/MK Sparkle/info.json rename to datafiles/data/Nodes/Internal/Extra/Node_MK_Sparkle/info.json index ee78c0b1c..518676563 100644 --- a/datafiles/data/Nodes/Internal/Extra/MK Sparkle/info.json +++ b/datafiles/data/Nodes/Internal/Extra/Node_MK_Sparkle/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate random star animation.", + "spr":"s_node_mk_sparkle", "baseNode":"Node_MK_Sparkle", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Extra/Bubble Noise/info.json b/datafiles/data/Nodes/Internal/Extra/Node_Noise_Bubble/info.json similarity index 80% rename from datafiles/data/Nodes/Internal/Extra/Bubble Noise/info.json rename to datafiles/data/Nodes/Internal/Extra/Node_Noise_Bubble/info.json index 671cada94..a732ff2ed 100644 --- a/datafiles/data/Nodes/Internal/Extra/Bubble Noise/info.json +++ b/datafiles/data/Nodes/Internal/Extra/Node_Noise_Bubble/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate bubble noise", + "spr":"s_node_noise_bubble", "baseNode":"Node_Noise_Bubble", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Extra/Cristal Noise/info.json b/datafiles/data/Nodes/Internal/Extra/Node_Noise_Cristal/info.json similarity index 80% rename from datafiles/data/Nodes/Internal/Extra/Cristal Noise/info.json rename to datafiles/data/Nodes/Internal/Extra/Node_Noise_Cristal/info.json index 976aa39a6..7938008b8 100644 --- a/datafiles/data/Nodes/Internal/Extra/Cristal Noise/info.json +++ b/datafiles/data/Nodes/Internal/Extra/Node_Noise_Cristal/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate Cristal noise", + "spr":"s_node_noise_cristal", "baseNode":"Node_Noise_Cristal", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Extra/Extra Perlins/info.json b/datafiles/data/Nodes/Internal/Extra/Node_Perlin_Extra/info.json similarity index 85% rename from datafiles/data/Nodes/Internal/Extra/Extra Perlins/info.json rename to datafiles/data/Nodes/Internal/Extra/Node_Perlin_Extra/info.json index f10d1974a..fea3dc500 100644 --- a/datafiles/data/Nodes/Internal/Extra/Extra Perlins/info.json +++ b/datafiles/data/Nodes/Internal/Extra/Node_Perlin_Extra/info.json @@ -3,6 +3,7 @@ "alias":[ "noise" ], + "spr":"s_node_perlin_extra", "baseNode":"Node_Perlin_Extra", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Extra/Pytagorean Tile/info.json b/datafiles/data/Nodes/Internal/Extra/Node_Pytagorean_Tile/info.json similarity index 80% rename from datafiles/data/Nodes/Internal/Extra/Pytagorean Tile/info.json rename to datafiles/data/Nodes/Internal/Extra/Node_Pytagorean_Tile/info.json index 996a6f7f9..4d3b58680 100644 --- a/datafiles/data/Nodes/Internal/Extra/Pytagorean Tile/info.json +++ b/datafiles/data/Nodes/Internal/Extra/Node_Pytagorean_Tile/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate Pytagorean tile pattern.", + "spr":"s_node_pytagorean_tile", "baseNode":"Node_Pytagorean_Tile", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Extra/RM Cloud/info.json b/datafiles/data/Nodes/Internal/Extra/Node_RM_Cloud/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Extra/RM Cloud/info.json rename to datafiles/data/Nodes/Internal/Extra/Node_RM_Cloud/info.json index 4f826566f..137cc2338 100644 --- a/datafiles/data/Nodes/Internal/Extra/RM Cloud/info.json +++ b/datafiles/data/Nodes/Internal/Extra/Node_RM_Cloud/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate distance field cloud texture.", + "spr":"s_node_rm_cloud", "baseNode":"Node_RM_Cloud", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Extra/Random Tile/info.json b/datafiles/data/Nodes/Internal/Extra/Node_Random_Tile/info.json similarity index 81% rename from datafiles/data/Nodes/Internal/Extra/Random Tile/info.json rename to datafiles/data/Nodes/Internal/Extra/Node_Random_Tile/info.json index 9c5f3ffeb..e129da799 100644 --- a/datafiles/data/Nodes/Internal/Extra/Random Tile/info.json +++ b/datafiles/data/Nodes/Internal/Extra/Node_Random_Tile/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate Random tile pattern.", + "spr":"s_node_random_tile", "baseNode":"Node_Random_Tile", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Extra/Shard Noise/info.json b/datafiles/data/Nodes/Internal/Extra/Node_Shard_Noise/info.json similarity index 82% rename from datafiles/data/Nodes/Internal/Extra/Shard Noise/info.json rename to datafiles/data/Nodes/Internal/Extra/Node_Shard_Noise/info.json index 7d1105fd2..6c9dca5d2 100644 --- a/datafiles/data/Nodes/Internal/Extra/Shard Noise/info.json +++ b/datafiles/data/Nodes/Internal/Extra/Node_Shard_Noise/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate glass shard-looking noise", + "spr":"s_node_shard_noise", "baseNode":"Node_Shard_Noise", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Extra/Extra Voronoi/info.json b/datafiles/data/Nodes/Internal/Extra/Node_Voronoi_Extra/info.json similarity index 85% rename from datafiles/data/Nodes/Internal/Extra/Extra Voronoi/info.json rename to datafiles/data/Nodes/Internal/Extra/Node_Voronoi_Extra/info.json index 228fd22a5..136468268 100644 --- a/datafiles/data/Nodes/Internal/Extra/Extra Voronoi/info.json +++ b/datafiles/data/Nodes/Internal/Extra/Node_Voronoi_Extra/info.json @@ -3,6 +3,7 @@ "alias":[ "noise" ], + "spr":"s_node_voronoi_extra", "baseNode":"Node_Voronoi_Extra", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Extra/Wavelet Noise/info.json b/datafiles/data/Nodes/Internal/Extra/Node_Wavelet_Noise/info.json similarity index 80% rename from datafiles/data/Nodes/Internal/Extra/Wavelet Noise/info.json rename to datafiles/data/Nodes/Internal/Extra/Node_Wavelet_Noise/info.json index d13a7346e..d61660c9d 100644 --- a/datafiles/data/Nodes/Internal/Extra/Wavelet Noise/info.json +++ b/datafiles/data/Nodes/Internal/Extra/Node_Wavelet_Noise/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate wavelet noise", + "spr":"s_node_wavelet_noise", "baseNode":"Node_Wavelet_Noise", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/FLIP Fluid/Add Collider/info.json b/datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_Apply_Force/info.json similarity index 51% rename from datafiles/data/Nodes/Internal/FLIP Fluid/Add Collider/info.json rename to datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_Apply_Force/info.json index 52acfa5f6..015d8ee44 100644 --- a/datafiles/data/Nodes/Internal/FLIP Fluid/Add Collider/info.json +++ b/datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_Apply_Force/info.json @@ -1,5 +1,7 @@ { - "tooltip":"", + "spr":"s_node_flip_apply_force", + "pxc_version":11620.0, + "show_in_recent":false, "baseNode":"Node_FLIP_Apply_Force", "io":[ "fDomain" diff --git a/datafiles/data/Nodes/Internal/FLIP Fluid/Apply Velocity/info.json b/datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_Apply_Velocity/info.json similarity index 52% rename from datafiles/data/Nodes/Internal/FLIP Fluid/Apply Velocity/info.json rename to datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_Apply_Velocity/info.json index fc3a784f5..3cc8812be 100644 --- a/datafiles/data/Nodes/Internal/FLIP Fluid/Apply Velocity/info.json +++ b/datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_Apply_Velocity/info.json @@ -1,5 +1,7 @@ { - "tooltip":"", + "spr":"s_node_flip_apply_velocity", + "pxc_version":11620.0, + "show_in_recent":false, "baseNode":"Node_FLIP_Apply_Velocity", "io":[ "fDomain" diff --git a/datafiles/data/Nodes/Internal/FLIP Fluid/Destroy/info.json b/datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_Destroy/info.json similarity index 50% rename from datafiles/data/Nodes/Internal/FLIP Fluid/Destroy/info.json rename to datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_Destroy/info.json index 27a8d55eb..8fb720470 100644 --- a/datafiles/data/Nodes/Internal/FLIP Fluid/Destroy/info.json +++ b/datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_Destroy/info.json @@ -1,5 +1,7 @@ { - "tooltip":"", + "spr":"s_node_flip_destroy", + "pxc_version":11680.0, + "show_in_recent":false, "baseNode":"Node_FLIP_Destroy", "io":[ "fDomain" diff --git a/datafiles/data/Nodes/Internal/FLIP Fluid/Domain/info.json b/datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_Domain/info.json similarity index 50% rename from datafiles/data/Nodes/Internal/FLIP Fluid/Domain/info.json rename to datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_Domain/info.json index 7acae9a4c..c9f4fc2bb 100644 --- a/datafiles/data/Nodes/Internal/FLIP Fluid/Domain/info.json +++ b/datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_Domain/info.json @@ -1,5 +1,7 @@ { - "tooltip":"", + "spr":"s_node_flip_domain", + "pxc_version":11620.0, + "show_in_recent":false, "baseNode":"Node_FLIP_Domain", "io":[ "fDomain" diff --git a/datafiles/data/Nodes/Internal/FLIP Fluid/Render/info.json b/datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_Render/info.json similarity index 54% rename from datafiles/data/Nodes/Internal/FLIP Fluid/Render/info.json rename to datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_Render/info.json index 293bf64e9..9511e299d 100644 --- a/datafiles/data/Nodes/Internal/FLIP Fluid/Render/info.json +++ b/datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_Render/info.json @@ -1,5 +1,7 @@ { - "tooltip":"", + "spr":"s_node_flip_render", + "pxc_version":11620.0, + "show_in_recent":false, "baseNode":"Node_FLIP_Render", "io":[ "fDomain", diff --git a/datafiles/data/Nodes/Internal/FLIP Fluid/Repel/info.json b/datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_Repel/info.json similarity index 50% rename from datafiles/data/Nodes/Internal/FLIP Fluid/Repel/info.json rename to datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_Repel/info.json index 50cac9d64..8e8f5012d 100644 --- a/datafiles/data/Nodes/Internal/FLIP Fluid/Repel/info.json +++ b/datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_Repel/info.json @@ -1,5 +1,7 @@ { - "tooltip":"", + "spr":"s_node_flip_repel", + "pxc_version":11680.0, + "show_in_recent":false, "baseNode":"Node_FLIP_Repel", "io":[ "fDomain" diff --git a/datafiles/data/Nodes/Internal/FLIP Fluid/Spawner/info.json b/datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_Spawner/info.json similarity index 50% rename from datafiles/data/Nodes/Internal/FLIP Fluid/Spawner/info.json rename to datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_Spawner/info.json index d14e38037..cd52ba7d5 100644 --- a/datafiles/data/Nodes/Internal/FLIP Fluid/Spawner/info.json +++ b/datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_Spawner/info.json @@ -1,5 +1,7 @@ { - "tooltip":"", + "spr":"s_node_flip_spawner", + "pxc_version":11620.0, + "show_in_recent":false, "baseNode":"Node_FLIP_Spawner", "io":[ "fDomain" diff --git a/datafiles/data/Nodes/Internal/FLIP Fluid/Update/info.json b/datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_Update/info.json similarity index 50% rename from datafiles/data/Nodes/Internal/FLIP Fluid/Update/info.json rename to datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_Update/info.json index d407c0925..58e47ce8b 100644 --- a/datafiles/data/Nodes/Internal/FLIP Fluid/Update/info.json +++ b/datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_Update/info.json @@ -1,5 +1,7 @@ { - "tooltip":"", + "spr":"s_node_flip_update", + "pxc_version":11620.0, + "show_in_recent":false, "baseNode":"Node_FLIP_Update", "io":[ "fDomain" diff --git a/datafiles/data/Nodes/Internal/FLIP Fluid/Vortex/info.json b/datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_Vortex/info.json similarity index 50% rename from datafiles/data/Nodes/Internal/FLIP Fluid/Vortex/info.json rename to datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_Vortex/info.json index a703219a2..9ee17c5c3 100644 --- a/datafiles/data/Nodes/Internal/FLIP Fluid/Vortex/info.json +++ b/datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_Vortex/info.json @@ -1,5 +1,7 @@ { - "tooltip":"", + "spr":"s_node_flip_vortex", + "pxc_version":11680.0, + "show_in_recent":false, "baseNode":"Node_FLIP_Vortex", "io":[ "fDomain" diff --git a/datafiles/data/Nodes/Internal/FLIP Fluid/FLIP to VFX/info.json b/datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_to_VFX/info.json similarity index 58% rename from datafiles/data/Nodes/Internal/FLIP Fluid/FLIP to VFX/info.json rename to datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_to_VFX/info.json index e5cccd63a..a838f0df0 100644 --- a/datafiles/data/Nodes/Internal/FLIP Fluid/FLIP to VFX/info.json +++ b/datafiles/data/Nodes/Internal/FLIP Fluid/Node_FLIP_to_VFX/info.json @@ -1,5 +1,7 @@ { - "tooltip":"", + "spr":"s_node_icon", + "pxc_version":11680.0, + "show_in_recent":false, "baseNode":"Node_FLIP_to_VFX", "io":[ "fDomain", diff --git a/datafiles/data/Nodes/Internal/Feedback/Input/info.json b/datafiles/data/Nodes/Internal/Feedback/Input/info.json deleted file mode 100644 index ae9b848fe..000000000 --- a/datafiles/data/Nodes/Internal/Feedback/Input/info.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_Feedback_Input", - "io":[ - "any" - ], - "name":"Input" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Feedback/Node_Feedback_Input/info.json b/datafiles/data/Nodes/Internal/Feedback/Node_Feedback_Input/info.json new file mode 100644 index 000000000..ef75fb880 --- /dev/null +++ b/datafiles/data/Nodes/Internal/Feedback/Node_Feedback_Input/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_feedback_input", + "baseNode":"Node_Feedback_Input", + "io":[ + "any" + ], + "name":"Input", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Feedback/Node_Feedback_Output/info.json b/datafiles/data/Nodes/Internal/Feedback/Node_Feedback_Output/info.json new file mode 100644 index 000000000..7db2b91fb --- /dev/null +++ b/datafiles/data/Nodes/Internal/Feedback/Node_Feedback_Output/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_feedback_output", + "baseNode":"Node_Feedback_Output", + "io":[ + "any" + ], + "name":"Output", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Filter/Thumbnail/info.json b/datafiles/data/Nodes/Internal/Feedback/Node_Group_Thumbnail/info.json similarity index 61% rename from datafiles/data/Nodes/Internal/Filter/Thumbnail/info.json rename to datafiles/data/Nodes/Internal/Feedback/Node_Group_Thumbnail/info.json index 3989c0db7..6e1b8df15 100644 --- a/datafiles/data/Nodes/Internal/Filter/Thumbnail/info.json +++ b/datafiles/data/Nodes/Internal/Feedback/Node_Group_Thumbnail/info.json @@ -1,5 +1,5 @@ { - "tooltip":"", + "spr":"s_node_group_thumbnail", "baseNode":"Node_Group_Thumbnail", "io":[ "surface", @@ -8,5 +8,6 @@ "surface", "surface" ], - "name":"Thumbnail" + "name":"Thumbnail", + "show_in_recent":false } \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Feedback/Output/info.json b/datafiles/data/Nodes/Internal/Feedback/Output/info.json deleted file mode 100644 index ee3608243..000000000 --- a/datafiles/data/Nodes/Internal/Feedback/Output/info.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_Feedback_Output", - "io":[ - "any" - ], - "name":"Output" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Filter/2D Light/info.json b/datafiles/data/Nodes/Internal/Filter/Node_2D_light/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Filter/2D Light/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_2D_light/info.json index 36c0b18c6..19a22568c 100644 --- a/datafiles/data/Nodes/Internal/Filter/2D Light/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_2D_light/info.json @@ -1,5 +1,6 @@ { "tooltip":"Apply different shaped light on the image.", + "spr":"s_node_2d_light", "baseNode":"Node_2D_light", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Alpha Cutoff/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Alpha_Cutoff/info.json similarity index 84% rename from datafiles/data/Nodes/Internal/Filter/Alpha Cutoff/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Alpha_Cutoff/info.json index e655aabf7..265c3221d 100644 --- a/datafiles/data/Nodes/Internal/Filter/Alpha Cutoff/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Alpha_Cutoff/info.json @@ -3,6 +3,7 @@ "alias":[ "remove alpha" ], + "spr":"s_node_alpha_cutoff", "baseNode":"Node_Alpha_Cutoff", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Alpha to Grey/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Alpha_Grey/info.json similarity index 86% rename from datafiles/data/Nodes/Internal/Filter/Alpha to Grey/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Alpha_Grey/info.json index 566e13f42..f0ba4888a 100644 --- a/datafiles/data/Nodes/Internal/Filter/Alpha to Grey/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Alpha_Grey/info.json @@ -3,6 +3,7 @@ "alias":[ "alpha to gray" ], + "spr":"s_node_alpha_grey", "baseNode":"Node_Alpha_Grey", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Pixel Expand/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Atlas/info.json similarity index 88% rename from datafiles/data/Nodes/Internal/Filter/Pixel Expand/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Atlas/info.json index 95e76ff13..6c475945a 100644 --- a/datafiles/data/Nodes/Internal/Filter/Pixel Expand/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Atlas/info.json @@ -3,6 +3,7 @@ "alias":[ "atlas" ], + "spr":"s_node_atlas", "baseNode":"Node_Atlas", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Average/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Average/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/Filter/Average/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Average/info.json index 1cc4873d8..507b0da9a 100644 --- a/datafiles/data/Nodes/Internal/Filter/Average/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Average/info.json @@ -1,5 +1,7 @@ { "tooltip":"Average color of every pixels in the image.", + "spr":"s_node_average", + "pxc_version":1110.0, "baseNode":"Node_Average", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/BW/info.json b/datafiles/data/Nodes/Internal/Filter/Node_BW/info.json similarity index 88% rename from datafiles/data/Nodes/Internal/Filter/BW/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_BW/info.json index a3a25330a..d6ea35492 100644 --- a/datafiles/data/Nodes/Internal/Filter/BW/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_BW/info.json @@ -3,6 +3,7 @@ "alias":[ "black and white" ], + "spr":"s_node_bw", "baseNode":"Node_BW", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Blend/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Blend/info.json similarity index 96% rename from datafiles/data/Nodes/Internal/Filter/Blend/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Blend/info.json index 4a1ee8cf5..53e391e38 100644 --- a/datafiles/data/Nodes/Internal/Filter/Blend/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Blend/info.json @@ -30,6 +30,7 @@ "saturation", "luminosity" ], + "spr":"s_node_blend", "baseNode":"Node_Blend", "io":[ "surface", diff --git a/datafiles/data/Nodes/Internal/Filter/Blend Edge/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Blend_Edge/info.json similarity index 74% rename from datafiles/data/Nodes/Internal/Filter/Blend Edge/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Blend_Edge/info.json index 247f759ca..e7a245380 100644 --- a/datafiles/data/Nodes/Internal/Filter/Blend Edge/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Blend_Edge/info.json @@ -1,5 +1,7 @@ { "tooltip":"Blend the edges of an image to create tilable patterns.", + "spr":"s_node_blend_edge", + "pxc_version":11740.0, "baseNode":"Node_Blend_Edge", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Blobify/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Blobify/info.json similarity index 75% rename from datafiles/data/Nodes/Internal/Filter/Blobify/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Blobify/info.json index 68f9738d8..77fca791e 100644 --- a/datafiles/data/Nodes/Internal/Filter/Blobify/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Blobify/info.json @@ -1,5 +1,7 @@ { "tooltip":"Round off sharp corner in BW image by bluring and thresholding.", + "spr":"s_node_blobify", + "pxc_version":11650.0, "baseNode":"Node_Blobify", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Bloom/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Bloom/info.json similarity index 87% rename from datafiles/data/Nodes/Internal/Filter/Bloom/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Bloom/info.json index 88b725b5e..b10ebef63 100644 --- a/datafiles/data/Nodes/Internal/Filter/Bloom/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Bloom/info.json @@ -1,5 +1,6 @@ { "tooltip":"Apply bloom effect, blurring and brighten the bright part of the image.", + "spr":"s_node_bloom", "baseNode":"Node_Bloom", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Blur/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Blur/info.json similarity index 86% rename from datafiles/data/Nodes/Internal/Filter/Blur/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Blur/info.json index 98a0c7a84..8104e5846 100644 --- a/datafiles/data/Nodes/Internal/Filter/Blur/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Blur/info.json @@ -3,6 +3,7 @@ "alias":[ "gaussian blur" ], + "spr":"s_node_blur", "baseNode":"Node_Blur", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Lens Blur/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Blur_Bokeh/info.json similarity index 78% rename from datafiles/data/Nodes/Internal/Filter/Lens Blur/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Blur_Bokeh/info.json index 116fbcd17..6e3d5c8c3 100644 --- a/datafiles/data/Nodes/Internal/Filter/Lens Blur/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Blur_Bokeh/info.json @@ -3,6 +3,8 @@ "alias":[ "bokeh" ], + "spr":"s_node_blur_bokeh", + "pxc_version":1110.0, "baseNode":"Node_Blur_Bokeh", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Box Blur/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Blur_Box/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Filter/Box Blur/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Blur_Box/info.json index c77c073b4..e3675ddd6 100644 --- a/datafiles/data/Nodes/Internal/Filter/Box Blur/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Blur_Box/info.json @@ -1,5 +1,7 @@ { "tooltip":"Blur pixel in square area uniformly.", + "spr":"s_node_blur_box", + "pxc_version":118062.0, "baseNode":"Node_Blur_Box", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Contrast Blur/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Blur_Contrast/info.json similarity index 81% rename from datafiles/data/Nodes/Internal/Filter/Contrast Blur/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Blur_Contrast/info.json index 0d0dc0d19..eccc0b249 100644 --- a/datafiles/data/Nodes/Internal/Filter/Contrast Blur/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Blur_Contrast/info.json @@ -1,5 +1,6 @@ { "tooltip":"Blur only pixel of a similiar color.", + "spr":"s_node_blur_contrast", "baseNode":"Node_Blur_Contrast", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Directional Blur/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Blur_Directional/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Filter/Directional Blur/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Blur_Directional/info.json index e4fe95655..b3cdd83e5 100644 --- a/datafiles/data/Nodes/Internal/Filter/Directional Blur/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Blur_Directional/info.json @@ -3,6 +3,7 @@ "alias":[ "motion blur" ], + "spr":"s_node_blur_directional", "baseNode":"Node_Blur_Directional", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Path Blur/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Blur_Path/info.json similarity index 69% rename from datafiles/data/Nodes/Internal/Filter/Path Blur/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Blur_Path/info.json index abab42af2..4c58e2506 100644 --- a/datafiles/data/Nodes/Internal/Filter/Path Blur/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Blur_Path/info.json @@ -1,5 +1,7 @@ { "tooltip":"Blur pixel along path.", + "spr":"s_node_blur_path", + "pxc_version":11750.0, "baseNode":"Node_Blur_Path", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Radial Blur/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Blur_Radial/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Filter/Radial Blur/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Blur_Radial/info.json index bcc69c24f..cd8e9fbac 100644 --- a/datafiles/data/Nodes/Internal/Filter/Radial Blur/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Blur_Radial/info.json @@ -1,5 +1,7 @@ { "tooltip":"Blur image by rotating around a mid point.", + "spr":"s_node_blur_radial", + "pxc_version":1110.0, "baseNode":"Node_Blur_Radial", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Shape Blur/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Blur_Shape/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Filter/Shape Blur/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Blur_Shape/info.json index e10395a13..5fa319ec1 100644 --- a/datafiles/data/Nodes/Internal/Filter/Shape Blur/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Blur_Shape/info.json @@ -1,5 +1,7 @@ { "tooltip":"Blur image using another image as blur map.", + "spr":"s_node_blur_shape", + "pxc_version":11650.0, "baseNode":"Node_Blur_Shape", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Non-Uniform Blur/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Blur_Simple/info.json similarity index 76% rename from datafiles/data/Nodes/Internal/Filter/Non-Uniform Blur/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Blur_Simple/info.json index cf6da515a..cd822132b 100644 --- a/datafiles/data/Nodes/Internal/Filter/Non-Uniform Blur/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Blur_Simple/info.json @@ -1,5 +1,7 @@ { "tooltip":"Blur image using simpler algorithm. Allowing for variable blur strength.", + "spr":"s_node_blur_simple", + "pxc_version":1070.0, "baseNode":"Node_Blur_Simple", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Slope Blur/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Blur_Slope/info.json similarity index 76% rename from datafiles/data/Nodes/Internal/Filter/Slope Blur/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Blur_Slope/info.json index 1948ef77d..2f5c6fa1d 100644 --- a/datafiles/data/Nodes/Internal/Filter/Slope Blur/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Blur_Slope/info.json @@ -3,6 +3,8 @@ "alias":[ "motion blur" ], + "spr":"s_node_blur_slope", + "pxc_version":11640.0, "baseNode":"Node_Blur_Slope", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Zoom Blur/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Blur_Zoom/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Filter/Zoom Blur/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Blur_Zoom/info.json index eed32a21f..17460d8e4 100644 --- a/datafiles/data/Nodes/Internal/Filter/Zoom Blur/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Blur_Zoom/info.json @@ -1,5 +1,6 @@ { "tooltip":"Blur image by zooming in\/out from a mid point.", + "spr":"s_node_blur_zoom", "baseNode":"Node_Blur_Zoom", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Brush/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Brush_Linear/info.json similarity index 79% rename from datafiles/data/Nodes/Internal/Filter/Brush/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Brush_Linear/info.json index 1c301fe28..1310f2503 100644 --- a/datafiles/data/Nodes/Internal/Filter/Brush/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Brush_Linear/info.json @@ -1,5 +1,6 @@ { "tooltip":"Apply brush effect.", + "spr":"s_node_brush_linear", "baseNode":"Node_Brush_Linear", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Chromatic Aberration/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Chromatic_Aberration/info.json similarity index 79% rename from datafiles/data/Nodes/Internal/Filter/Chromatic Aberration/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Chromatic_Aberration/info.json index 51b356770..e93715b7d 100644 --- a/datafiles/data/Nodes/Internal/Filter/Chromatic Aberration/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Chromatic_Aberration/info.json @@ -1,5 +1,6 @@ { "tooltip":"Apply chromatic aberration effect to the image.", + "spr":"s_node_chromatic_aberration", "baseNode":"Node_Chromatic_Aberration", "io":[ ], diff --git a/datafiles/data/Nodes/Internal/Filter/Remove Color/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Color_Remove/info.json similarity index 84% rename from datafiles/data/Nodes/Internal/Filter/Remove Color/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Color_Remove/info.json index cfc327971..663214bcb 100644 --- a/datafiles/data/Nodes/Internal/Filter/Remove Color/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Color_Remove/info.json @@ -3,6 +3,7 @@ "alias":[ "delete color" ], + "spr":"s_node_color_remove", "baseNode":"Node_Color_Remove", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Separate Color/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Color_Separate/info.json similarity index 82% rename from datafiles/data/Nodes/Internal/Filter/Separate Color/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Color_Separate/info.json index 821868480..f73f200a4 100644 --- a/datafiles/data/Nodes/Internal/Filter/Separate Color/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Color_Separate/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate array of surfaces for each color.", + "spr":"s_node_color_separate", "baseNode":"Node_Color_Separate", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Color Adjust/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Color_adjust/info.json similarity index 91% rename from datafiles/data/Nodes/Internal/Filter/Color Adjust/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Color_adjust/info.json index de0ed08a8..dc0cfff68 100644 --- a/datafiles/data/Nodes/Internal/Filter/Color Adjust/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Color_adjust/info.json @@ -9,6 +9,7 @@ "color blend", "alpha" ], + "spr":"s_node_color_adjust", "baseNode":"Node_Color_adjust", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Replace Palette/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Color_replace/info.json similarity index 89% rename from datafiles/data/Nodes/Internal/Filter/Replace Palette/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Color_replace/info.json index aa2a909ca..0fb67635e 100644 --- a/datafiles/data/Nodes/Internal/Filter/Replace Palette/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Color_replace/info.json @@ -6,6 +6,7 @@ "palette swap", "colors replace" ], + "spr":"s_node_color_replace", "baseNode":"Node_Color_replace", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Colorize/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Colorize/info.json similarity index 87% rename from datafiles/data/Nodes/Internal/Filter/Colorize/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Colorize/info.json index 6588482a1..acf6c785f 100644 --- a/datafiles/data/Nodes/Internal/Filter/Colorize/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Colorize/info.json @@ -3,6 +3,7 @@ "alias":[ "recolor" ], + "spr":"s_node_colorize", "baseNode":"Node_Colorize", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Replace Colors/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Colors_Replace/info.json similarity index 87% rename from datafiles/data/Nodes/Internal/Filter/Replace Colors/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Colors_Replace/info.json index 7a593b667..8f89fedbd 100644 --- a/datafiles/data/Nodes/Internal/Filter/Replace Colors/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Colors_Replace/info.json @@ -5,6 +5,7 @@ "select color", "palette swap" ], + "spr":"s_node_colors_replace", "baseNode":"Node_Colors_Replace", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/HSV Combine/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Combine_HSV/info.json similarity index 75% rename from datafiles/data/Nodes/Internal/Filter/HSV Combine/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Combine_HSV/info.json index 3cc7884e0..cc8403ce8 100644 --- a/datafiles/data/Nodes/Internal/Filter/HSV Combine/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Combine_HSV/info.json @@ -1,5 +1,7 @@ { "tooltip":"Combine 4 image in to one. Each image use to control HSVA channel.", + "spr":"s_node_combine_hsv", + "pxc_version":1070.0, "baseNode":"Node_Combine_HSV", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/RGBA Combine/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Combine_RGB/info.json similarity index 75% rename from datafiles/data/Nodes/Internal/Filter/RGBA Combine/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Combine_RGB/info.json index c00a885d4..bebd23910 100644 --- a/datafiles/data/Nodes/Internal/Filter/RGBA Combine/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Combine_RGB/info.json @@ -1,5 +1,7 @@ { "tooltip":"Combine 4 image in to one. Each image use to control RGBA channel.", + "spr":"s_node_combine_rgb", + "pxc_version":1070.0, "baseNode":"Node_Combine_RGB", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Convolution/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Convolution/info.json similarity index 78% rename from datafiles/data/Nodes/Internal/Filter/Convolution/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Convolution/info.json index 2ae89cb31..1784f5a90 100644 --- a/datafiles/data/Nodes/Internal/Filter/Convolution/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Convolution/info.json @@ -3,6 +3,8 @@ "alias":[ "kernel" ], + "spr":"s_node_convolution", + "pxc_version":1090.0, "baseNode":"Node_Convolution", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Round Corner/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Corner/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/Filter/Round Corner/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Corner/info.json index 0157f54fe..8a6f52ee9 100644 --- a/datafiles/data/Nodes/Internal/Filter/Round Corner/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Corner/info.json @@ -1,5 +1,7 @@ { "tooltip":"Round out sharp corner of the image.", + "spr":"s_node_corner", + "pxc_version":1110.0, "baseNode":"Node_Corner", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Curve/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Curve/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/Filter/Curve/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Curve/info.json index 84690eabb..0e0805ee9 100644 --- a/datafiles/data/Nodes/Internal/Filter/Curve/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Curve/info.json @@ -1,5 +1,7 @@ { "tooltip":"Adjust brightness of an image using curves.", + "spr":"s_node_curve", + "pxc_version":1120.0, "baseNode":"Node_Curve", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/HSV Curve/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Curve_HSV/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Filter/HSV Curve/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Curve_HSV/info.json index e1712fa46..788ea8544 100644 --- a/datafiles/data/Nodes/Internal/Filter/HSV Curve/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Curve_HSV/info.json @@ -1,5 +1,7 @@ { "tooltip":"Adjust hsv values of an image using curves.", + "spr":"s_node_curve_hsv", + "pxc_version":11720.0, "baseNode":"Node_Curve_HSV", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/De-Corner/info.json b/datafiles/data/Nodes/Internal/Filter/Node_De_Corner/info.json similarity index 86% rename from datafiles/data/Nodes/Internal/Filter/De-Corner/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_De_Corner/info.json index 72155c8cc..39fce6389 100644 --- a/datafiles/data/Nodes/Internal/Filter/De-Corner/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_De_Corner/info.json @@ -3,6 +3,7 @@ "alias":[ "decorner" ], + "spr":"s_node_de_corner", "baseNode":"Node_De_Corner", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/De-Stray/info.json b/datafiles/data/Nodes/Internal/Filter/Node_De_Stray/info.json similarity index 85% rename from datafiles/data/Nodes/Internal/Filter/De-Stray/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_De_Stray/info.json index 57bfd7963..919d9b2ea 100644 --- a/datafiles/data/Nodes/Internal/Filter/De-Stray/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_De_Stray/info.json @@ -3,6 +3,7 @@ "alias":[ "destray" ], + "spr":"s_node_de_stray", "baseNode":"Node_De_Stray", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Dilate/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Dilate/info.json similarity index 86% rename from datafiles/data/Nodes/Internal/Filter/Dilate/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Dilate/info.json index 4eb76db91..68b45225b 100644 --- a/datafiles/data/Nodes/Internal/Filter/Dilate/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Dilate/info.json @@ -3,6 +3,7 @@ "alias":[ "inflate" ], + "spr":"s_node_dilate", "baseNode":"Node_Dilate", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Displace/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Displace/info.json similarity index 86% rename from datafiles/data/Nodes/Internal/Filter/Displace/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Displace/info.json index e45623596..84856b15e 100644 --- a/datafiles/data/Nodes/Internal/Filter/Displace/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Displace/info.json @@ -3,6 +3,7 @@ "alias":[ "distort" ], + "spr":"s_node_displace", "baseNode":"Node_Displace", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Dither/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Dither/info.json similarity index 85% rename from datafiles/data/Nodes/Internal/Filter/Dither/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Dither/info.json index 56e5f3f48..f9ca1cc53 100644 --- a/datafiles/data/Nodes/Internal/Filter/Dither/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Dither/info.json @@ -1,5 +1,6 @@ { "tooltip":"Reduce color and use dithering to preserve original color.", + "spr":"s_node_dither", "baseNode":"Node_Dither", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Error Diffuse Dither/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Dither_Diffuse/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/Filter/Error Diffuse Dither/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Dither_Diffuse/info.json index a37a74b5e..2f03cd681 100644 --- a/datafiles/data/Nodes/Internal/Filter/Error Diffuse Dither/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Dither_Diffuse/info.json @@ -1,5 +1,7 @@ { "tooltip":"Dither image using error diffusion algorithm.", + "spr":"s_node_dither_diffuse", + "pxc_version":118051.0, "baseNode":"Node_Dither_Diffuse", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Edge Detect/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Edge_Detect/info.json similarity index 84% rename from datafiles/data/Nodes/Internal/Filter/Edge Detect/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Edge_Detect/info.json index 09901cec7..dbcae2e3a 100644 --- a/datafiles/data/Nodes/Internal/Filter/Edge Detect/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Edge_Detect/info.json @@ -1,5 +1,6 @@ { "tooltip":"Edge detect by applying Sobel, Prewitt, or Laplacian kernel.", + "spr":"s_node_edge_detect", "baseNode":"Node_Edge_Detect", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Erode/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Erode/info.json similarity index 85% rename from datafiles/data/Nodes/Internal/Filter/Erode/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Erode/info.json index 28ccae40d..1e9fbb744 100644 --- a/datafiles/data/Nodes/Internal/Filter/Erode/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Erode/info.json @@ -1,5 +1,6 @@ { "tooltip":"Remove pixel that are close to the border of the image.", + "spr":"s_node_erode", "baseNode":"Node_Erode", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/FXAA/info.json b/datafiles/data/Nodes/Internal/Filter/Node_FXAA/info.json similarity index 88% rename from datafiles/data/Nodes/Internal/Filter/FXAA/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_FXAA/info.json index 55ddf0f7d..0ba41c777 100644 --- a/datafiles/data/Nodes/Internal/Filter/FXAA/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_FXAA/info.json @@ -3,6 +3,7 @@ "alias":[ "anti aliasing" ], + "spr":"s_node_fxaa", "baseNode":"Node_FXAA", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Gamma Map/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Gamma_Map/info.json similarity index 76% rename from datafiles/data/Nodes/Internal/Filter/Gamma Map/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Gamma_Map/info.json index 2eb2416bb..456bfdd62 100644 --- a/datafiles/data/Nodes/Internal/Filter/Gamma Map/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Gamma_Map/info.json @@ -3,6 +3,8 @@ "alias":[ "srgb" ], + "spr":"s_node_gamma_map", + "pxc_version":11660.0, "baseNode":"Node_Gamma_Map", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Glow/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Glow/info.json similarity index 84% rename from datafiles/data/Nodes/Internal/Filter/Glow/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Glow/info.json index 42e51935c..63f0a6204 100644 --- a/datafiles/data/Nodes/Internal/Filter/Glow/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Glow/info.json @@ -1,5 +1,6 @@ { "tooltip":"Apply glow to the border of the image.", + "spr":"s_node_glow", "baseNode":"Node_Glow", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Grain/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Grain/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Filter/Grain/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Grain/info.json index 3b33779aa..82014e18f 100644 --- a/datafiles/data/Nodes/Internal/Filter/Grain/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Grain/info.json @@ -1,5 +1,7 @@ { "tooltip":"Add noise pattern to the image.", + "spr":"s_node_grain", + "pxc_version":11770.0, "baseNode":"Node_Grain", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Grey to Alpha/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Grey_Alpha/info.json similarity index 85% rename from datafiles/data/Nodes/Internal/Filter/Grey to Alpha/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Grey_Alpha/info.json index 40034dbe5..0b721ca51 100644 --- a/datafiles/data/Nodes/Internal/Filter/Grey to Alpha/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Grey_Alpha/info.json @@ -3,6 +3,7 @@ "alias":[ "gray to alpha" ], + "spr":"s_node_grey_alpha", "baseNode":"Node_Grey_Alpha", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Greyscale/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Greyscale/info.json similarity index 85% rename from datafiles/data/Nodes/Internal/Filter/Greyscale/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Greyscale/info.json index 8afe4c4e0..b59216f94 100644 --- a/datafiles/data/Nodes/Internal/Filter/Greyscale/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Greyscale/info.json @@ -3,6 +3,7 @@ "alias":[ "grayscale" ], + "spr":"s_node_greyscale", "baseNode":"Node_Greyscale", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Input/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Group_Input/info.json similarity index 66% rename from datafiles/data/Nodes/Internal/Filter/Input/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Group_Input/info.json index 07a748ffd..9be62189a 100644 --- a/datafiles/data/Nodes/Internal/Filter/Input/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Group_Input/info.json @@ -1,5 +1,5 @@ { - "tooltip":"", + "spr":"s_node_group_input", "baseNode":"Node_Group_Input", "io":[ "any", @@ -12,5 +12,6 @@ "any", "any" ], - "name":"Input" + "name":"Input", + "show_in_recent":false } \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Loop/Output/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Group_Output/info.json similarity index 66% rename from datafiles/data/Nodes/Internal/Loop/Output/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Group_Output/info.json index bbbf3e81d..c84ac4769 100644 --- a/datafiles/data/Nodes/Internal/Loop/Output/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Group_Output/info.json @@ -1,5 +1,5 @@ { - "tooltip":"", + "spr":"s_node_group_output", "baseNode":"Node_Group_Output", "io":[ "any", @@ -12,5 +12,6 @@ "any", "any" ], - "name":"Output" + "name":"Output", + "show_in_recent":false } \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Feedback/Thumbnail/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Group_Thumbnail/info.json similarity index 61% rename from datafiles/data/Nodes/Internal/Feedback/Thumbnail/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Group_Thumbnail/info.json index 3989c0db7..6e1b8df15 100644 --- a/datafiles/data/Nodes/Internal/Feedback/Thumbnail/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Group_Thumbnail/info.json @@ -1,5 +1,5 @@ { - "tooltip":"", + "spr":"s_node_group_thumbnail", "baseNode":"Node_Group_Thumbnail", "io":[ "surface", @@ -8,5 +8,6 @@ "surface", "surface" ], - "name":"Thumbnail" + "name":"Thumbnail", + "show_in_recent":false } \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Filter/HSV Extract/info.json b/datafiles/data/Nodes/Internal/Filter/Node_HSV_Channel/info.json similarity index 76% rename from datafiles/data/Nodes/Internal/Filter/HSV Extract/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_HSV_Channel/info.json index 28c7c94b6..13ff31573 100644 --- a/datafiles/data/Nodes/Internal/Filter/HSV Extract/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_HSV_Channel/info.json @@ -1,5 +1,7 @@ { "tooltip":"Extract HSVA channel on an image, each channel becomes its own image.", + "spr":"s_node_hsv_channel", + "pxc_version":1070.0, "baseNode":"Node_HSV_Channel", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/High Pass/info.json b/datafiles/data/Nodes/Internal/Filter/Node_High_Pass/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/Filter/High Pass/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_High_Pass/info.json index c034d6ce9..c619c8e20 100644 --- a/datafiles/data/Nodes/Internal/Filter/High Pass/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_High_Pass/info.json @@ -3,6 +3,8 @@ "alias":[ "sharpen" ], + "spr":"s_node_high_pass", + "pxc_version":118010.0, "baseNode":"Node_High_Pass", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Interlace/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Interlaced/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Filter/Interlace/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Interlaced/info.json index 36aa0b4aa..882f2ef1a 100644 --- a/datafiles/data/Nodes/Internal/Filter/Interlace/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Interlaced/info.json @@ -1,5 +1,7 @@ { "tooltip":"Apply interlace effect to an image.", + "spr":"s_node_interlaced", + "pxc_version":11760.0, "baseNode":"Node_Interlaced", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Invert/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Invert/info.json similarity index 84% rename from datafiles/data/Nodes/Internal/Filter/Invert/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Invert/info.json index 3cbedca85..2df8fd119 100644 --- a/datafiles/data/Nodes/Internal/Filter/Invert/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Invert/info.json @@ -3,6 +3,7 @@ "alias":[ "negate" ], + "spr":"s_node_invert", "baseNode":"Node_Invert", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Array Length/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Iterator_Each_Length/info.json similarity index 50% rename from datafiles/data/Nodes/Internal/Filter/Array Length/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Iterator_Each_Length/info.json index e5a93bea9..6f534a92a 100644 --- a/datafiles/data/Nodes/Internal/Filter/Array Length/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Iterator_Each_Length/info.json @@ -1,9 +1,10 @@ { - "tooltip":"", + "spr":"s_node_iterator_length", "baseNode":"Node_Iterator_Each_Length", "io":[ "float", "float" ], - "name":"Array Length" + "name":"Array Length", + "show_in_recent":false } \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Loop/Index/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Iterator_Index/info.json similarity index 63% rename from datafiles/data/Nodes/Internal/Loop/Index/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Iterator_Index/info.json index 2c6dca88f..a8780ccc0 100644 --- a/datafiles/data/Nodes/Internal/Loop/Index/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Iterator_Index/info.json @@ -1,5 +1,5 @@ { - "tooltip":"", + "spr":"s_node_iterator_index", "baseNode":"Node_Iterator_Index", "io":[ "float", @@ -9,5 +9,6 @@ "float", "float" ], - "name":"Index" + "name":"Index", + "show_in_recent":false } \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Loop/Loop amount/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Iterator_Length/info.json similarity index 55% rename from datafiles/data/Nodes/Internal/Loop/Loop amount/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Iterator_Length/info.json index e10261ef7..fe936e06d 100644 --- a/datafiles/data/Nodes/Internal/Loop/Loop amount/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Iterator_Length/info.json @@ -1,5 +1,5 @@ { - "tooltip":"", + "spr":"s_node_iterator_amount", "baseNode":"Node_Iterator_Length", "io":[ "float", @@ -7,5 +7,6 @@ "float", "float" ], - "name":"Loop amount" + "name":"Loop amount", + "show_in_recent":false } \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Filter/JPEG/info.json b/datafiles/data/Nodes/Internal/Filter/Node_JPEG/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Filter/JPEG/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_JPEG/info.json index 4b8e36075..6c6b74fdd 100644 --- a/datafiles/data/Nodes/Internal/Filter/JPEG/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_JPEG/info.json @@ -1,5 +1,7 @@ { "tooltip":"Apply JPEG compression to the image.", + "spr":"s_node_jpeg", + "pxc_version":11730.0, "baseNode":"Node_JPEG", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Kuwahara/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Kuwahara/info.json similarity index 74% rename from datafiles/data/Nodes/Internal/Filter/Kuwahara/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Kuwahara/info.json index 1d0db3d39..243fefee7 100644 --- a/datafiles/data/Nodes/Internal/Filter/Kuwahara/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Kuwahara/info.json @@ -1,5 +1,7 @@ { "tooltip":"Apply Kuwahara filter. Creating a watercolor-like effect.", + "spr":"s_node_kuwahara", + "pxc_version":11660.0, "baseNode":"Node_Kuwahara", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Level/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Level/info.json similarity index 86% rename from datafiles/data/Nodes/Internal/Filter/Level/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Level/info.json index d867707e6..fef3dcabc 100644 --- a/datafiles/data/Nodes/Internal/Filter/Level/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Level/info.json @@ -1,5 +1,6 @@ { "tooltip":"Adjust brightness of an image by changing its brightness range.", + "spr":"s_node_level", "baseNode":"Node_Level", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Level Selector/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Level_Selector/info.json similarity index 84% rename from datafiles/data/Nodes/Internal/Filter/Level Selector/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Level_Selector/info.json index 2dcc33f85..027699996 100644 --- a/datafiles/data/Nodes/Internal/Filter/Level Selector/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Level_Selector/info.json @@ -1,5 +1,6 @@ { "tooltip":"Isolate part of the image that falls in the selected brightness range.", + "spr":"s_node_level_selector", "baseNode":"Node_Level_Selector", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Liquefy/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Liquefy/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Filter/Liquefy/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Liquefy/info.json index 45b2d87d3..2c1a16ef7 100644 --- a/datafiles/data/Nodes/Internal/Filter/Liquefy/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Liquefy/info.json @@ -1,5 +1,7 @@ { "tooltip":"Distort image using variety of tools.", + "spr":"s_node_liquefy", + "pxc_version":118020.0, "baseNode":"Node_Liquefy", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Local Analyze/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Local_Analyze/info.json similarity index 75% rename from datafiles/data/Nodes/Internal/Filter/Local Analyze/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Local_Analyze/info.json index 4c3194b68..afaf870dd 100644 --- a/datafiles/data/Nodes/Internal/Filter/Local Analyze/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Local_Analyze/info.json @@ -1,5 +1,7 @@ { "tooltip":"Apply non-linear operation (minimum, maximum) on each pixel locally.", + "spr":"s_node_local_analyze", + "pxc_version":1110.0, "baseNode":"Node_Local_Analyze", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Mirror/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Mirror/info.json similarity index 75% rename from datafiles/data/Nodes/Internal/Filter/Mirror/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Mirror/info.json index edba77794..42ab65282 100644 --- a/datafiles/data/Nodes/Internal/Filter/Mirror/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Mirror/info.json @@ -1,5 +1,7 @@ { "tooltip":"Reflect the image along a reflection line.", + "spr":"s_node_mirror", + "pxc_version":1070.0, "baseNode":"Node_Mirror", "io":[ "surface", diff --git a/datafiles/data/Nodes/Internal/Filter/Polar Mirror/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Mirror_Polar/info.json similarity index 77% rename from datafiles/data/Nodes/Internal/Filter/Polar Mirror/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Mirror_Polar/info.json index eac084f57..a141a90b9 100644 --- a/datafiles/data/Nodes/Internal/Filter/Polar Mirror/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Mirror_Polar/info.json @@ -3,6 +3,8 @@ "alias":[ "kaleidoscope" ], + "spr":"s_node_mirror_polar", + "pxc_version":118062.0, "baseNode":"Node_Mirror_Polar", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Morph Surface/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Morph_Surface/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Filter/Morph Surface/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Morph_Surface/info.json index e7a3242fe..5923037d2 100644 --- a/datafiles/data/Nodes/Internal/Filter/Morph Surface/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Morph_Surface/info.json @@ -1,5 +1,7 @@ { "tooltip":"Morph pixel between two surfaces.", + "spr":"s_node_morph_surface", + "pxc_version":1141.0, "baseNode":"Node_Morph_Surface", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Normalize/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Normalize/info.json similarity index 76% rename from datafiles/data/Nodes/Internal/Filter/Normalize/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Normalize/info.json index 1bac8e8e4..d2177cc02 100644 --- a/datafiles/data/Nodes/Internal/Filter/Normalize/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Normalize/info.json @@ -1,5 +1,7 @@ { "tooltip":"Normalize image ranges (brightness, RGB channels) in to [0, 1] range.", + "spr":"s_node_normalize", + "pxc_version":11710.0, "baseNode":"Node_Normalize", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Outline/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Outline/info.json similarity index 85% rename from datafiles/data/Nodes/Internal/Filter/Outline/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Outline/info.json index 6746a2cb5..a31fe9e09 100644 --- a/datafiles/data/Nodes/Internal/Filter/Outline/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Outline/info.json @@ -3,6 +3,7 @@ "alias":[ "border" ], + "spr":"s_node_outline", "baseNode":"Node_Outline", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Override Channel/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Override_Channel/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Filter/Override Channel/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Override_Channel/info.json index 9d3b3c26c..4cbd51357 100644 --- a/datafiles/data/Nodes/Internal/Filter/Override Channel/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Override_Channel/info.json @@ -1,5 +1,7 @@ { "tooltip":"Replace RGBA value of one surface with another.", + "spr":"s_node_override_channel", + "pxc_version":11640.0, "baseNode":"Node_Override_Channel", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Palette Shift/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Palette_Shift/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Filter/Palette Shift/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Palette_Shift/info.json index d7f06ec4d..2d7603a7f 100644 --- a/datafiles/data/Nodes/Internal/Filter/Palette Shift/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Palette_Shift/info.json @@ -1,5 +1,7 @@ { "tooltip":"Shift the order of color in palette.", + "spr":"s_node_palette_shift", + "pxc_version":1147.0, "baseNode":"Node_Palette_Shift", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Pixel Cloud/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Pixel_Cloud/info.json similarity index 82% rename from datafiles/data/Nodes/Internal/Filter/Pixel Cloud/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Pixel_Cloud/info.json index bc87fb0df..0f326caf3 100644 --- a/datafiles/data/Nodes/Internal/Filter/Pixel Cloud/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Pixel_Cloud/info.json @@ -1,5 +1,6 @@ { "tooltip":"Displace each pixel of the image randomly.", + "spr":"s_node_pixel_cloud", "baseNode":"Node_Pixel_Cloud", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Pixel Math/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Pixel_Math/info.json similarity index 89% rename from datafiles/data/Nodes/Internal/Filter/Pixel Math/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Pixel_Math/info.json index 3c7472db5..3fdbb77ab 100644 --- a/datafiles/data/Nodes/Internal/Filter/Pixel Math/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Pixel_Math/info.json @@ -25,6 +25,8 @@ "clamp", "snap" ], + "spr":"s_node_pixel_math", + "pxc_version":118020.0, "baseNode":"Node_Pixel_Math", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Pixel Sort/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Pixel_Sort/info.json similarity index 84% rename from datafiles/data/Nodes/Internal/Filter/Pixel Sort/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Pixel_Sort/info.json index de8aa858e..143ceb55b 100644 --- a/datafiles/data/Nodes/Internal/Filter/Pixel Sort/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Pixel_Sort/info.json @@ -1,5 +1,6 @@ { "tooltip":"Sort pixel by brightness in horizontal, or vertial axis.", + "spr":"s_node_pixel_sort", "baseNode":"Node_Pixel_Sort", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Posterize/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Posterize/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Filter/Posterize/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Posterize/info.json index ea90ec524..073be0200 100644 --- a/datafiles/data/Nodes/Internal/Filter/Posterize/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Posterize/info.json @@ -1,5 +1,6 @@ { "tooltip":"Reduce and remap color to match a palette.", + "spr":"s_node_posterize", "baseNode":"Node_Posterize", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/RGBA Extract/info.json b/datafiles/data/Nodes/Internal/Filter/Node_RGB_Channel/info.json similarity index 87% rename from datafiles/data/Nodes/Internal/Filter/RGBA Extract/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_RGB_Channel/info.json index 4b77d2910..cf4433b97 100644 --- a/datafiles/data/Nodes/Internal/Filter/RGBA Extract/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_RGB_Channel/info.json @@ -3,6 +3,7 @@ "alias":[ "channel extract" ], + "spr":"s_node_rgb_channel", "baseNode":"Node_RGB_Channel", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/SDF/info.json b/datafiles/data/Nodes/Internal/Filter/Node_SDF/info.json similarity index 76% rename from datafiles/data/Nodes/Internal/Filter/SDF/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_SDF/info.json index 678a71d81..af2a1ce5f 100644 --- a/datafiles/data/Nodes/Internal/Filter/SDF/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_SDF/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create signed distance field using jump flooding algorithm.", + "spr":"s_node_sdf", + "pxc_version":1130.0, "baseNode":"Node_SDF", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Shadow/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Shadow/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Filter/Shadow/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Shadow/info.json index 23ae6f336..557962d23 100644 --- a/datafiles/data/Nodes/Internal/Filter/Shadow/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Shadow/info.json @@ -1,5 +1,6 @@ { "tooltip":"Apply shadow behind the image.", + "spr":"s_node_shadow", "baseNode":"Node_Shadow", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Cast Shadow/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Shadow_Cast/info.json similarity index 75% rename from datafiles/data/Nodes/Internal/Filter/Cast Shadow/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Shadow_Cast/info.json index 20234626a..24944358f 100644 --- a/datafiles/data/Nodes/Internal/Filter/Cast Shadow/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Shadow_Cast/info.json @@ -3,6 +3,8 @@ "alias":[ "raycast" ], + "spr":"s_node_shadow_cast", + "pxc_version":1100.0, "baseNode":"Node_Shadow_Cast", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Shape Map/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Shape_Map/info.json similarity index 69% rename from datafiles/data/Nodes/Internal/Filter/Shape Map/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Shape_Map/info.json index 943a09648..584efd790 100644 --- a/datafiles/data/Nodes/Internal/Filter/Shape Map/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Shape_Map/info.json @@ -1,5 +1,7 @@ { "tooltip":"Map image into shapes.", + "spr":"s_node_shape_map", + "pxc_version":11660.0, "baseNode":"Node_Shape_Map", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Shuffle/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Shuffle/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Filter/Shuffle/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Shuffle/info.json index 80ff8703f..df24c8216 100644 --- a/datafiles/data/Nodes/Internal/Filter/Shuffle/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Shuffle/info.json @@ -1,5 +1,7 @@ { "tooltip":"Shuffle image while keeping pixel colors.", + "spr":"s_node_shuffle", + "pxc_version":118056.0, "baseNode":"Node_Shuffle", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Smear/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Smear/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/Filter/Smear/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Smear/info.json index 0806c39a6..fe0def9d2 100644 --- a/datafiles/data/Nodes/Internal/Filter/Smear/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Smear/info.json @@ -1,5 +1,7 @@ { "tooltip":"Stretch out brighter pixel in one direction.", + "spr":"s_node_smear", + "pxc_version":11670.0, "baseNode":"Node_Smear", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Spherize/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Spherize/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/Filter/Spherize/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Spherize/info.json index a780dc4fe..b375e32e4 100644 --- a/datafiles/data/Nodes/Internal/Filter/Spherize/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Spherize/info.json @@ -1,5 +1,7 @@ { "tooltip":"Wrap a texture on to sphere.", + "spr":"s_node_spherize", + "pxc_version":11630.0, "baseNode":"Node_Spherize", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Replace Image/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Surface_Replace/info.json similarity index 76% rename from datafiles/data/Nodes/Internal/Filter/Replace Image/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Surface_Replace/info.json index 19de91f85..72795b1cd 100644 --- a/datafiles/data/Nodes/Internal/Filter/Replace Image/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Surface_Replace/info.json @@ -3,6 +3,8 @@ "alias":[ "image replace" ], + "spr":"s_node_surface_replace", + "pxc_version":1140.0, "baseNode":"Node_Surface_Replace", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Texture Remap/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Texture_Remap/info.json similarity index 86% rename from datafiles/data/Nodes/Internal/Filter/Texture Remap/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Texture_Remap/info.json index 0eeaf3437..8746174a0 100644 --- a/datafiles/data/Nodes/Internal/Filter/Texture Remap/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Texture_Remap/info.json @@ -1,5 +1,6 @@ { "tooltip":"Remap image using texture map. Where red channel control x position and green channel control y position.", + "spr":"s_node_texture_remap", "baseNode":"Node_Texture_Remap", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Threshold/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Threshold/info.json similarity index 79% rename from datafiles/data/Nodes/Internal/Filter/Threshold/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Threshold/info.json index f3a3c0cd1..086942175 100644 --- a/datafiles/data/Nodes/Internal/Filter/Threshold/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Threshold/info.json @@ -1,5 +1,7 @@ { "tooltip":"Set a threshold where pixel darker will becomes black, and brighter to white. Also works with alpha.", + "spr":"s_node_threshold", + "pxc_version":1080.0, "baseNode":"Node_Threshold", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Time Remap/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Time_Remap/info.json similarity index 87% rename from datafiles/data/Nodes/Internal/Filter/Time Remap/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Time_Remap/info.json index 67ead17f5..bddc9a2ff 100644 --- a/datafiles/data/Nodes/Internal/Filter/Time Remap/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Time_Remap/info.json @@ -1,5 +1,6 @@ { "tooltip":"Remap image using texture as time map. Where brighter pixel in time map means using pixel from an older frame.", + "spr":"s_node_time_remap", "baseNode":"Node_Time_Remap", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/ACE/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Tonemap_ACE/info.json similarity index 68% rename from datafiles/data/Nodes/Internal/Filter/ACE/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Tonemap_ACE/info.json index 26d0f1b75..9d86eb421 100644 --- a/datafiles/data/Nodes/Internal/Filter/ACE/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Tonemap_ACE/info.json @@ -1,5 +1,7 @@ { "tooltip":"Apply ACE tonemapping.", + "spr":"s_node_tonemap_ace", + "pxc_version":11710.0, "baseNode":"Node_Tonemap_ACE", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Trail/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Trail/info.json similarity index 77% rename from datafiles/data/Nodes/Internal/Filter/Trail/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Trail/info.json index 910a49a80..2f8094fbc 100644 --- a/datafiles/data/Nodes/Internal/Filter/Trail/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Trail/info.json @@ -1,5 +1,7 @@ { "tooltip":"Blend animation by filling in the pixel 'in-between' two or more frames.", + "spr":"s_node_trail", + "pxc_version":1130.0, "baseNode":"Node_Trail", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Twirl/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Twirl/info.json similarity index 86% rename from datafiles/data/Nodes/Internal/Filter/Twirl/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Twirl/info.json index 3a23d31f4..03c5d4fe7 100644 --- a/datafiles/data/Nodes/Internal/Filter/Twirl/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Twirl/info.json @@ -3,6 +3,7 @@ "alias":[ "twist" ], + "spr":"s_node_twirl", "baseNode":"Node_Twirl", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Filter/Vignette/info.json b/datafiles/data/Nodes/Internal/Filter/Node_Vignette/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Filter/Vignette/info.json rename to datafiles/data/Nodes/Internal/Filter/Node_Vignette/info.json index 37276e9f3..724d81593 100644 --- a/datafiles/data/Nodes/Internal/Filter/Vignette/info.json +++ b/datafiles/data/Nodes/Internal/Filter/Node_Vignette/info.json @@ -1,5 +1,7 @@ { "tooltip":"Apply vignette effect to the border.", + "spr":"s_node_vignette", + "pxc_version":11630.0, "baseNode":"Node_Vignette", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Box Pattern/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Box_Pattern/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/Generate/Box Pattern/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Box_Pattern/info.json index 964c8eba0..f3e916eb2 100644 --- a/datafiles/data/Nodes/Internal/Generate/Box Pattern/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Box_Pattern/info.json @@ -1,5 +1,7 @@ { "tooltip":"Generate square-based patterns.", + "spr":"s_node_box_pattern", + "pxc_version":11750.0, "baseNode":"Node_Box_Pattern", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Caustic/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Caustic/info.json similarity index 81% rename from datafiles/data/Nodes/Internal/Generate/Caustic/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Caustic/info.json index 797a85292..731d7ee6a 100644 --- a/datafiles/data/Nodes/Internal/Generate/Caustic/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Caustic/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate caustic noise", + "spr":"s_node_caustic", "baseNode":"Node_Caustic", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Cellular Noise/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Cellular/info.json similarity index 86% rename from datafiles/data/Nodes/Internal/Generate/Cellular Noise/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Cellular/info.json index 72357c016..61af8e129 100644 --- a/datafiles/data/Nodes/Internal/Generate/Cellular Noise/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Cellular/info.json @@ -4,6 +4,7 @@ "voronoi", "worley" ], + "spr":"s_node_cellular", "baseNode":"Node_Cellular", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Checker/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Checker/info.json similarity index 82% rename from datafiles/data/Nodes/Internal/Generate/Checker/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Checker/info.json index 5ac7e43f1..761ca7c83 100644 --- a/datafiles/data/Nodes/Internal/Generate/Checker/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Checker/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate checkerboard pattern.", + "spr":"s_node_checker", "baseNode":"Node_Checker", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Draw Cross Section/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Cross_Section/info.json similarity index 75% rename from datafiles/data/Nodes/Internal/Generate/Draw Cross Section/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Cross_Section/info.json index 4606a5976..7438da893 100644 --- a/datafiles/data/Nodes/Internal/Generate/Draw Cross Section/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Cross_Section/info.json @@ -1,5 +1,7 @@ { "tooltip":"Map the brightness of pixels on a linear axis into a surface.", + "spr":"s_node_cross_section", + "pxc_version":11710.0, "baseNode":"Node_Cross_Section", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Diffuse/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Diffuse/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Generate/Diffuse/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Diffuse/info.json index 860e30d93..71116a29f 100644 --- a/datafiles/data/Nodes/Internal/Generate/Diffuse/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Diffuse/info.json @@ -1,5 +1,7 @@ { "tooltip":"Simulate diffusion like simulation.", + "spr":"s_node_diffuse", + "pxc_version":11640.0, "baseNode":"Node_Diffuse", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/FLIP Fluid/info.json b/datafiles/data/Nodes/Internal/Generate/Node_FLIP_Group_Inline/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Generate/FLIP Fluid/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_FLIP_Group_Inline/info.json index f993ee12c..b1e3f8047 100644 --- a/datafiles/data/Nodes/Internal/Generate/FLIP Fluid/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_FLIP_Group_Inline/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create group for fluid simulation.", + "spr":"s_node_flip_group", + "pxc_version":11620.0, "baseNode":"Node_FLIP_Group_Inline", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Flood Fill/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Flood_Fill/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/Generate/Flood Fill/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Flood_Fill/info.json index 2f1a8b694..c7ba8d810 100644 --- a/datafiles/data/Nodes/Internal/Generate/Flood Fill/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Flood_Fill/info.json @@ -1,5 +1,7 @@ { "tooltip":"Filled connected pixel given position and color.", + "spr":"s_node_flood_fill", + "pxc_version":1133.0, "baseNode":"Node_Flood_Fill", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Flow Noise/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Flow_Noise/info.json similarity index 81% rename from datafiles/data/Nodes/Internal/Generate/Flow Noise/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Flow_Noise/info.json index b0f111899..d9dc187dd 100644 --- a/datafiles/data/Nodes/Internal/Generate/Flow Noise/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Flow_Noise/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate fluid flow noise", + "spr":"s_node_flow_noise", "baseNode":"Node_Flow_Noise", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Fold Noise/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Fold_Noise/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/Generate/Fold Noise/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Fold_Noise/info.json index 72ce7fd04..220e6b421 100644 --- a/datafiles/data/Nodes/Internal/Generate/Fold Noise/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Fold_Noise/info.json @@ -1,5 +1,7 @@ { "tooltip":"Generate cloth fold noise", + "spr":"s_node_fold_noise", + "pxc_version":11650.0, "baseNode":"Node_Fold_Noise", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Gabor Noise/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Gabor_Noise/info.json similarity index 80% rename from datafiles/data/Nodes/Internal/Generate/Gabor Noise/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Gabor_Noise/info.json index c890fb292..5def95504 100644 --- a/datafiles/data/Nodes/Internal/Generate/Gabor Noise/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Gabor_Noise/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate Gabor noise", + "spr":"s_node_gabor_noise", "baseNode":"Node_Gabor_Noise", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Draw Gradient/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Gradient/info.json similarity index 82% rename from datafiles/data/Nodes/Internal/Generate/Draw Gradient/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Gradient/info.json index 56a77056a..49529c09b 100644 --- a/datafiles/data/Nodes/Internal/Generate/Draw Gradient/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Gradient/info.json @@ -1,5 +1,6 @@ { "tooltip":"Create image from gradient.", + "spr":"s_node_gradient", "baseNode":"Node_Gradient", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Draw 4 Points Gradient/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Gradient_Points/info.json similarity index 81% rename from datafiles/data/Nodes/Internal/Generate/Draw 4 Points Gradient/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Gradient_Points/info.json index 7f2aa9620..44280faab 100644 --- a/datafiles/data/Nodes/Internal/Generate/Draw 4 Points Gradient/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Gradient_Points/info.json @@ -1,5 +1,6 @@ { "tooltip":"Create image from 4 color points.", + "spr":"s_node_gradient_points", "baseNode":"Node_Gradient_Points", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Grid/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Grid/info.json similarity index 86% rename from datafiles/data/Nodes/Internal/Generate/Grid/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Grid/info.json index 8e6d33889..35efe25aa 100644 --- a/datafiles/data/Nodes/Internal/Generate/Grid/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Grid/info.json @@ -4,6 +4,7 @@ "tile", "mosaic" ], + "spr":"s_node_grid", "baseNode":"Node_Grid", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Hexagonal Grid/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Grid_Hex/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Generate/Hexagonal Grid/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Grid_Hex/info.json index df9a9ea53..802996c73 100644 --- a/datafiles/data/Nodes/Internal/Generate/Hexagonal Grid/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Grid_Hex/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate hexagonal grid pattern.", + "spr":"s_node_grid_hex", "baseNode":"Node_Grid_Hex", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Pentagonal Grid/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Grid_Pentagonal/info.json similarity index 80% rename from datafiles/data/Nodes/Internal/Generate/Pentagonal Grid/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Grid_Pentagonal/info.json index 5ce6fa3e9..0ba4535ca 100644 --- a/datafiles/data/Nodes/Internal/Generate/Pentagonal Grid/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Grid_Pentagonal/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate Pentagonal grid pattern.", + "spr":"s_node_grid_pentagonal", "baseNode":"Node_Grid_Pentagonal", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Triangular Grid/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Grid_Tri/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Generate/Triangular Grid/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Grid_Tri/info.json index ebd938f56..b5b1d5830 100644 --- a/datafiles/data/Nodes/Internal/Generate/Triangular Grid/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Grid_Tri/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate triangular grid pattern.", + "spr":"s_node_grid_tri", "baseNode":"Node_Grid_Tri", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Herringbone Tile/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Herringbone_Tile/info.json similarity index 80% rename from datafiles/data/Nodes/Internal/Generate/Herringbone Tile/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Herringbone_Tile/info.json index fb6330e34..aa07191e5 100644 --- a/datafiles/data/Nodes/Internal/Generate/Herringbone Tile/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Herringbone_Tile/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate Herringbone tile pattern.", + "spr":"s_node_herringbone_tile", "baseNode":"Node_Herringbone_Tile", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Honeycomb Noise/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Honeycomb_Noise/info.json similarity index 79% rename from datafiles/data/Nodes/Internal/Generate/Honeycomb Noise/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Honeycomb_Noise/info.json index 02e0708e6..5c26fa23b 100644 --- a/datafiles/data/Nodes/Internal/Generate/Honeycomb Noise/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Honeycomb_Noise/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate honeycomb noise", + "spr":"s_node_honeycomb_noise", "baseNode":"Node_Honeycomb_Noise", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Interpret Number/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Interpret_Number/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Generate/Interpret Number/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Interpret_Number/info.json index 0912b8dbc..d0bb4b66d 100644 --- a/datafiles/data/Nodes/Internal/Generate/Interpret Number/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Interpret_Number/info.json @@ -1,5 +1,7 @@ { "tooltip":"Convert array of number into surface.", + "spr":"s_node_interpret_number", + "pxc_version":11530.0, "baseNode":"Node_Interpret_Number", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Julia/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Julia_Set/info.json similarity index 68% rename from datafiles/data/Nodes/Internal/Generate/Julia/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Julia_Set/info.json index 8062d5736..92238f27a 100644 --- a/datafiles/data/Nodes/Internal/Generate/Julia/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Julia_Set/info.json @@ -1,5 +1,7 @@ { "tooltip":"Generate Julia fractal.", + "spr":"s_node_julia_set", + "pxc_version":118056.0, "baseNode":"Node_Julia_Set", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Draw Line/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Line/info.json similarity index 87% rename from datafiles/data/Nodes/Internal/Generate/Draw Line/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Line/info.json index be277a0df..97446457f 100644 --- a/datafiles/data/Nodes/Internal/Generate/Draw Line/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Line/info.json @@ -1,5 +1,6 @@ { "tooltip":"Draw line on an image. Connect path data to it to draw line from path.", + "spr":"s_node_line", "baseNode":"Node_Line", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/MK Blinker/info.json b/datafiles/data/Nodes/Internal/Generate/Node_MK_Blinker/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/Generate/MK Blinker/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_MK_Blinker/info.json index 91fa974d6..5cde11a41 100644 --- a/datafiles/data/Nodes/Internal/Generate/MK Blinker/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_MK_Blinker/info.json @@ -1,5 +1,7 @@ { "tooltip":"Flicker regions of the selected colors randomly.", + "spr":"s_node_mk_blinker", + "pxc_version":11630.0, "baseNode":"Node_MK_Blinker", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/MK Brownian/info.json b/datafiles/data/Nodes/Internal/Generate/Node_MK_Brownian/info.json similarity index 69% rename from datafiles/data/Nodes/Internal/Generate/MK Brownian/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_MK_Brownian/info.json index 9fb9ecd92..19fad9a18 100644 --- a/datafiles/data/Nodes/Internal/Generate/MK Brownian/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_MK_Brownian/info.json @@ -1,5 +1,7 @@ { "tooltip":"Generate random particle.", + "spr":"s_node_mk_brownian", + "pxc_version":11630.0, "baseNode":"Node_MK_Brownian", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/MK Delay Machine/info.json b/datafiles/data/Nodes/Internal/Generate/Node_MK_Delay_Machine/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Generate/MK Delay Machine/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_MK_Delay_Machine/info.json index 67e8a8e44..abec26b6b 100644 --- a/datafiles/data/Nodes/Internal/Generate/MK Delay Machine/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_MK_Delay_Machine/info.json @@ -1,5 +1,7 @@ { "tooltip":"Combines multiple frames of animation into one.", + "spr":"s_node_mk_delay_machine", + "pxc_version":11680.0, "baseNode":"Node_MK_Delay_Machine", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/MK Fall/info.json b/datafiles/data/Nodes/Internal/Generate/Node_MK_Fall/info.json similarity index 76% rename from datafiles/data/Nodes/Internal/Generate/MK Fall/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_MK_Fall/info.json index d256873aa..d6abe4d47 100644 --- a/datafiles/data/Nodes/Internal/Generate/MK Fall/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_MK_Fall/info.json @@ -4,6 +4,8 @@ "Leaf", "Leaves" ], + "spr":"s_node_mk_fall", + "pxc_version":11630.0, "baseNode":"Node_MK_Fall", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/MK Flag/info.json b/datafiles/data/Nodes/Internal/Generate/Node_MK_Flag/info.json similarity index 69% rename from datafiles/data/Nodes/Internal/Generate/MK Flag/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_MK_Flag/info.json index 9845e8132..b1a01f93e 100644 --- a/datafiles/data/Nodes/Internal/Generate/MK Flag/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_MK_Flag/info.json @@ -1,5 +1,7 @@ { "tooltip":"Generate waving flag.", + "spr":"s_node_mk_flag", + "pxc_version":11600.0, "baseNode":"Node_MK_Flag", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/MK Lens Flare/info.json b/datafiles/data/Nodes/Internal/Generate/Node_MK_Flare/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/Generate/MK Lens Flare/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_MK_Flare/info.json index 94ffcaecc..0e70a3b78 100644 --- a/datafiles/data/Nodes/Internal/Generate/MK Lens Flare/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_MK_Flare/info.json @@ -1,5 +1,7 @@ { "tooltip":"Generate lens flare.", + "spr":"s_node_mk_flare", + "pxc_version":11630.0, "baseNode":"Node_MK_Flare", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/MK Fracture/info.json b/datafiles/data/Nodes/Internal/Generate/Node_MK_Fracture/info.json similarity index 84% rename from datafiles/data/Nodes/Internal/Generate/MK Fracture/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_MK_Fracture/info.json index a84c526c0..892c1e670 100644 --- a/datafiles/data/Nodes/Internal/Generate/MK Fracture/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_MK_Fracture/info.json @@ -1,5 +1,6 @@ { "tooltip":"Deterministically fracture and image and apply basic physics.", + "spr":"s_node_mk_fracture", "baseNode":"Node_MK_Fracture", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/MK GridBalls/info.json b/datafiles/data/Nodes/Internal/Generate/Node_MK_GridBalls/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Generate/MK GridBalls/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_MK_GridBalls/info.json index 4beeff117..651a497d7 100644 --- a/datafiles/data/Nodes/Internal/Generate/MK GridBalls/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_MK_GridBalls/info.json @@ -1,5 +1,7 @@ { "tooltip":"Generate controllable grid of spheres.", + "spr":"s_node_mk_gridballs", + "pxc_version":11600.0, "baseNode":"Node_MK_GridBalls", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/MK GridFlip/info.json b/datafiles/data/Nodes/Internal/Generate/Node_MK_GridFlip/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Generate/MK GridFlip/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_MK_GridFlip/info.json index a9c68b8c4..389d64274 100644 --- a/datafiles/data/Nodes/Internal/Generate/MK GridFlip/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_MK_GridFlip/info.json @@ -1,5 +1,7 @@ { "tooltip":"Generate controllable grid of planes.", + "spr":"s_node_mk_gridflip", + "pxc_version":11600.0, "baseNode":"Node_MK_GridFlip", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/MK Rain/info.json b/datafiles/data/Nodes/Internal/Generate/Node_MK_Rain/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/Generate/MK Rain/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_MK_Rain/info.json index 33065129a..6dc742ead 100644 --- a/datafiles/data/Nodes/Internal/Generate/MK Rain/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_MK_Rain/info.json @@ -1,5 +1,7 @@ { "tooltip":"Generate deterministic rain.", + "spr":"s_node_mk_rain", + "pxc_version":11600.0, "baseNode":"Node_MK_Rain", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/MK Saber/info.json b/datafiles/data/Nodes/Internal/Generate/Node_MK_Saber/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Generate/MK Saber/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_MK_Saber/info.json index 820632c52..4c2a18c9b 100644 --- a/datafiles/data/Nodes/Internal/Generate/MK Saber/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_MK_Saber/info.json @@ -1,5 +1,7 @@ { "tooltip":"Generate glowing saber from 2 points.", + "spr":"s_node_mk_saber", + "pxc_version":11600.0, "baseNode":"Node_MK_Saber", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/MK Sparkle/info.json b/datafiles/data/Nodes/Internal/Generate/Node_MK_Sparkle/info.json similarity index 81% rename from datafiles/data/Nodes/Internal/Generate/MK Sparkle/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_MK_Sparkle/info.json index ee78c0b1c..518676563 100644 --- a/datafiles/data/Nodes/Internal/Generate/MK Sparkle/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_MK_Sparkle/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate random star animation.", + "spr":"s_node_mk_sparkle", "baseNode":"Node_MK_Sparkle", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/MK Subpixel/info.json b/datafiles/data/Nodes/Internal/Generate/Node_MK_Subpixel/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Generate/MK Subpixel/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_MK_Subpixel/info.json index d3a6c360a..7025994e0 100644 --- a/datafiles/data/Nodes/Internal/Generate/MK Subpixel/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_MK_Subpixel/info.json @@ -1,5 +1,7 @@ { "tooltip":"Apply subpixel filter on top of a surface.", + "spr":"s_node_mk_subpixel", + "pxc_version":117110.0, "baseNode":"Node_MK_Subpixel", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/MK Tile/info.json b/datafiles/data/Nodes/Internal/Generate/Node_MK_Tile/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Generate/MK Tile/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_MK_Tile/info.json index ced8ad974..7c0923932 100644 --- a/datafiles/data/Nodes/Internal/Generate/MK Tile/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_MK_Tile/info.json @@ -1,5 +1,7 @@ { "tooltip":"Generate game engines-ready tileset.", + "spr":"s_node_mk_tile", + "pxc_version":11600.0, "baseNode":"Node_MK_Tile", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Noise/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Noise/info.json similarity index 82% rename from datafiles/data/Nodes/Internal/Generate/Noise/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Noise/info.json index 684a3741f..9705a6f40 100644 --- a/datafiles/data/Nodes/Internal/Generate/Noise/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Noise/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate white noise.", + "spr":"s_node_noise", "baseNode":"Node_Noise", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Anisotropic Noise/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Noise_Aniso/info.json similarity index 81% rename from datafiles/data/Nodes/Internal/Generate/Anisotropic Noise/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Noise_Aniso/info.json index b2dd1608f..a611994a8 100644 --- a/datafiles/data/Nodes/Internal/Generate/Anisotropic Noise/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Noise_Aniso/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate anisotropic noise.", + "spr":"s_node_noise_aniso", "baseNode":"Node_Noise_Aniso", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Bubble Noise/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Noise_Bubble/info.json similarity index 80% rename from datafiles/data/Nodes/Internal/Generate/Bubble Noise/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Noise_Bubble/info.json index 671cada94..a732ff2ed 100644 --- a/datafiles/data/Nodes/Internal/Generate/Bubble Noise/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Noise_Bubble/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate bubble noise", + "spr":"s_node_noise_bubble", "baseNode":"Node_Noise_Bubble", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Cristal Noise/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Noise_Cristal/info.json similarity index 80% rename from datafiles/data/Nodes/Internal/Generate/Cristal Noise/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Noise_Cristal/info.json index 976aa39a6..7938008b8 100644 --- a/datafiles/data/Nodes/Internal/Generate/Cristal Noise/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Noise_Cristal/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate Cristal noise", + "spr":"s_node_noise_cristal", "baseNode":"Node_Noise_Cristal", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Simplex Noise/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Noise_Simplex/info.json similarity index 79% rename from datafiles/data/Nodes/Internal/Generate/Simplex Noise/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Noise_Simplex/info.json index d21dbf62c..fb294d2f0 100644 --- a/datafiles/data/Nodes/Internal/Generate/Simplex Noise/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Noise_Simplex/info.json @@ -3,6 +3,8 @@ "alias":[ "perlin" ], + "spr":"s_node_noise_simplex", + "pxc_version":1080.0, "baseNode":"Node_Noise_Simplex", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Strand Noise/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Noise_Strand/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/Generate/Strand Noise/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Noise_Strand/info.json index 987622309..14fba2b1b 100644 --- a/datafiles/data/Nodes/Internal/Generate/Strand Noise/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Noise_Strand/info.json @@ -1,5 +1,7 @@ { "tooltip":"Generate random srtands noise.", + "spr":"s_node_noise_strand", + "pxc_version":11650.0, "baseNode":"Node_Noise_Strand", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Particle/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Particle/info.json similarity index 81% rename from datafiles/data/Nodes/Internal/Generate/Particle/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Particle/info.json index 0b241734b..0a66a90d6 100644 --- a/datafiles/data/Nodes/Internal/Generate/Particle/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Particle/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate particle effect.", + "spr":"s_node_particle", "baseNode":"Node_Particle", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Draw Path Profile/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Path_Profile/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Generate/Draw Path Profile/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Path_Profile/info.json index 43081b95d..aacc901ad 100644 --- a/datafiles/data/Nodes/Internal/Generate/Draw Path Profile/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Path_Profile/info.json @@ -1,5 +1,7 @@ { "tooltip":"Fill-in an area on one side of a path.", + "spr":"s_node_path_profile", + "pxc_version":11660.0, "baseNode":"Node_Path_Profile", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Perlin Noise/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Perlin/info.json similarity index 82% rename from datafiles/data/Nodes/Internal/Generate/Perlin Noise/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Perlin/info.json index e5d7514b5..ef5bd9653 100644 --- a/datafiles/data/Nodes/Internal/Generate/Perlin Noise/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Perlin/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate perlin noise.", + "spr":"s_node_perlin", "baseNode":"Node_Perlin", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Extra Perlins/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Perlin_Extra/info.json similarity index 85% rename from datafiles/data/Nodes/Internal/Generate/Extra Perlins/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Perlin_Extra/info.json index f10d1974a..fea3dc500 100644 --- a/datafiles/data/Nodes/Internal/Generate/Extra Perlins/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Perlin_Extra/info.json @@ -3,6 +3,7 @@ "alias":[ "noise" ], + "spr":"s_node_perlin_extra", "baseNode":"Node_Perlin_Extra", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Pixel Builder/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Pixel_Builder/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/Generate/Pixel Builder/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Pixel_Builder/info.json index c466360e9..44fbcfc63 100644 --- a/datafiles/data/Nodes/Internal/Generate/Pixel Builder/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Pixel_Builder/info.json @@ -1,5 +1,7 @@ { "tooltip":"Will break, do not create. please. Why is it here??", + "spr":"s_node_pixel_builder", + "pxc_version":11540.0, "baseNode":"Node_Pixel_Builder", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Pixel Sampler/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Pixel_Sampler/info.json similarity index 74% rename from datafiles/data/Nodes/Internal/Generate/Pixel Sampler/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Pixel_Sampler/info.json index 4c7b2abd6..4dd2abcfc 100644 --- a/datafiles/data/Nodes/Internal/Generate/Pixel Sampler/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Pixel_Sampler/info.json @@ -1,5 +1,7 @@ { "tooltip":"Map image on to each individual pixels of another image.", + "spr":"s_node_pixel_sampler", + "pxc_version":11730.0, "baseNode":"Node_Pixel_Sampler", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Animation/Draw Bar Graph/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Plot_Linear/info.json similarity index 84% rename from datafiles/data/Nodes/Internal/Animation/Draw Bar Graph/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Plot_Linear/info.json index 44786f93a..3e4174044 100644 --- a/datafiles/data/Nodes/Internal/Animation/Draw Bar Graph/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Plot_Linear/info.json @@ -6,6 +6,8 @@ "graph", "waveform" ], + "spr":"s_node_plot_linear", + "pxc_version":1144.0, "baseNode":"Node_Plot_Linear", "io":[ "surface", diff --git a/datafiles/data/Nodes/Internal/Generate/Pytagorean Tile/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Pytagorean_Tile/info.json similarity index 80% rename from datafiles/data/Nodes/Internal/Generate/Pytagorean Tile/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Pytagorean_Tile/info.json index 996a6f7f9..4d3b58680 100644 --- a/datafiles/data/Nodes/Internal/Generate/Pytagorean Tile/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Pytagorean_Tile/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate Pytagorean tile pattern.", + "spr":"s_node_pytagorean_tile", "baseNode":"Node_Pytagorean_Tile", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Quasicrystal/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Quasicrystal/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/Generate/Quasicrystal/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Quasicrystal/info.json index a757e0f3a..97e931408 100644 --- a/datafiles/data/Nodes/Internal/Generate/Quasicrystal/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Quasicrystal/info.json @@ -1,5 +1,7 @@ { "tooltip":"Generate Quasicrystal pattern.", + "spr":"s_node_quasicrystal", + "pxc_version":11660.0, "baseNode":"Node_Quasicrystal", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Reaction Diffusion/info.json b/datafiles/data/Nodes/Internal/Generate/Node_RD/info.json similarity index 68% rename from datafiles/data/Nodes/Internal/Generate/Reaction Diffusion/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_RD/info.json index 78e2c3118..8bcac43c1 100644 --- a/datafiles/data/Nodes/Internal/Generate/Reaction Diffusion/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_RD/info.json @@ -1,5 +1,7 @@ { "tooltip":"Simulate reaction diffusion effect.", + "spr":"s_node_reaction_diffusion", + "pxc_version":11630.0, "baseNode":"Node_RD", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Draw Random Shape/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Random_Shape/info.json similarity index 74% rename from datafiles/data/Nodes/Internal/Generate/Draw Random Shape/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Random_Shape/info.json index 88e0a9ef6..2700a96a4 100644 --- a/datafiles/data/Nodes/Internal/Generate/Draw Random Shape/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Random_Shape/info.json @@ -1,5 +1,7 @@ { "tooltip":"Generate random shape, use for testing purposes.", + "spr":"s_node_random_shape", + "pxc_version":1147.0, "baseNode":"Node_Random_Shape", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Random Tile/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Random_Tile/info.json similarity index 81% rename from datafiles/data/Nodes/Internal/Generate/Random Tile/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Random_Tile/info.json index 9c5f3ffeb..e129da799 100644 --- a/datafiles/data/Nodes/Internal/Generate/Random Tile/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Random_Tile/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate Random tile pattern.", + "spr":"s_node_random_tile", "baseNode":"Node_Random_Tile", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Region Fill/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Region_Fill/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Generate/Region Fill/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Region_Fill/info.json index 55734109e..3093855e0 100644 --- a/datafiles/data/Nodes/Internal/Generate/Region Fill/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Region_Fill/info.json @@ -1,5 +1,7 @@ { "tooltip":"Fill connected pixel with colors.", + "spr":"s_node_region_fill", + "pxc_version":1147.0, "baseNode":"Node_Region_Fill", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Repeat/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Repeat/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Generate/Repeat/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Repeat/info.json index bc4466f6d..c127c0269 100644 --- a/datafiles/data/Nodes/Internal/Generate/Repeat/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Repeat/info.json @@ -4,6 +4,8 @@ "repeat polar", "repeat circular" ], + "spr":"s_node_repeat", + "pxc_version":1100.0, "baseNode":"Node_Repeat", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Repeat Texture/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Repeat_Texture/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Generate/Repeat Texture/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Repeat_Texture/info.json index c1a8e0c27..7b5587771 100644 --- a/datafiles/data/Nodes/Internal/Generate/Repeat Texture/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Repeat_Texture/info.json @@ -1,5 +1,6 @@ { "tooltip":"Repeat texture over larger surface without repeating patterns.", + "spr":"s_node_repeat_texture", "baseNode":"Node_Repeat_Texture", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/RigidSim/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Rigid_Group_Inline/info.json similarity index 75% rename from datafiles/data/Nodes/Internal/Generate/RigidSim/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Rigid_Group_Inline/info.json index 7796b0e4e..25fd3cd55 100644 --- a/datafiles/data/Nodes/Internal/Generate/RigidSim/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Rigid_Group_Inline/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create group for rigidbody simulation.", + "spr":"s_node_rigid", + "pxc_version":1110.0, "baseNode":"Node_Rigid_Group_Inline", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Scatter/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Scatter/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Generate/Scatter/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Scatter/info.json index 0834092e1..0435c94e2 100644 --- a/datafiles/data/Nodes/Internal/Generate/Scatter/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Scatter/info.json @@ -1,5 +1,6 @@ { "tooltip":"Scatter image randomly multiple times.", + "spr":"s_node_scatter", "baseNode":"Node_Scatter", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Separate Shape/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Seperate_Shape/info.json similarity index 84% rename from datafiles/data/Nodes/Internal/Generate/Separate Shape/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Seperate_Shape/info.json index 1b84f4faf..ad0e83dc4 100644 --- a/datafiles/data/Nodes/Internal/Generate/Separate Shape/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Seperate_Shape/info.json @@ -1,5 +1,6 @@ { "tooltip":"Separate disconnected pixel each into an image in an image array.", + "spr":"s_node_seperate_shape", "baseNode":"Node_Seperate_Shape", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Draw Shape/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Shape/info.json similarity index 95% rename from datafiles/data/Nodes/Internal/Generate/Draw Shape/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Shape/info.json index 7fbc9d657..3da060167 100644 --- a/datafiles/data/Nodes/Internal/Generate/Draw Shape/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Shape/info.json @@ -27,6 +27,7 @@ "heart", "gear" ], + "spr":"s_node_shape", "baseNode":"Node_Shape", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Draw Shape Polygon/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Shape_Polygon/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/Generate/Draw Shape Polygon/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Shape_Polygon/info.json index abdd66733..77dbb70fd 100644 --- a/datafiles/data/Nodes/Internal/Generate/Draw Shape Polygon/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Shape_Polygon/info.json @@ -1,5 +1,7 @@ { "tooltip":"Draw polygonal shapes.", + "spr":"s_node_shape_polygon", + "pxc_version":1130.0, "baseNode":"Node_Shape_Polygon", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Shard Noise/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Shard_Noise/info.json similarity index 82% rename from datafiles/data/Nodes/Internal/Generate/Shard Noise/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Shard_Noise/info.json index 7d1105fd2..6c9dca5d2 100644 --- a/datafiles/data/Nodes/Internal/Generate/Shard Noise/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Shard_Noise/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate glass shard-looking noise", + "spr":"s_node_shard_noise", "baseNode":"Node_Shard_Noise", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Sky/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Sky/info.json similarity index 85% rename from datafiles/data/Nodes/Internal/Generate/Sky/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Sky/info.json index e1e0c0da8..35e7e9759 100644 --- a/datafiles/data/Nodes/Internal/Generate/Sky/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Sky/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate sky texture using different model.", + "spr":"s_node_sky", "baseNode":"Node_Sky", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/SmokeSim/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Smoke_Group_Inline/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Generate/SmokeSim/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Smoke_Group_Inline/info.json index d0ff1297d..e8c6f30d1 100644 --- a/datafiles/data/Nodes/Internal/Generate/SmokeSim/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Smoke_Group_Inline/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create group for smoke simulation.", + "spr":"s_node_smoke_group", + "pxc_version":1120.0, "baseNode":"Node_Smoke_Group_Inline", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Solid/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Solid/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Generate/Solid/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Solid/info.json index 66a1d4c59..1f927de44 100644 --- a/datafiles/data/Nodes/Internal/Generate/Solid/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Solid/info.json @@ -1,5 +1,6 @@ { "tooltip":"Create image of a single color.", + "spr":"s_node_solid", "baseNode":"Node_Solid", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/StrandSim/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Strand_Group_Inline/info.json similarity index 77% rename from datafiles/data/Nodes/Internal/Generate/StrandSim/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Strand_Group_Inline/info.json index 1dc46b6cb..a00e3f361 100644 --- a/datafiles/data/Nodes/Internal/Generate/StrandSim/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Strand_Group_Inline/info.json @@ -3,6 +3,8 @@ "alias":[ "hair" ], + "spr":"s_node_strand", + "pxc_version":1140.0, "baseNode":"Node_Strand_Group_Inline", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Stripe/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Stripe/info.json similarity index 82% rename from datafiles/data/Nodes/Internal/Generate/Stripe/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Stripe/info.json index e88296f7c..0577a5255 100644 --- a/datafiles/data/Nodes/Internal/Generate/Stripe/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Stripe/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate stripe pattern.", + "spr":"s_node_stripe", "baseNode":"Node_Stripe", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Draw Text/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Text/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Generate/Draw Text/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Text/info.json index 4cb80adce..3552e4e86 100644 --- a/datafiles/data/Nodes/Internal/Generate/Draw Text/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Text/info.json @@ -1,5 +1,6 @@ { "tooltip":"Draw text on an image.", + "spr":"s_node_text", "baseNode":"Node_Text", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Tile Drawer/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Tile_Drawer/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/Generate/Tile Drawer/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Tile_Drawer/info.json index 93841aa7b..e13a841f9 100644 --- a/datafiles/data/Nodes/Internal/Generate/Tile Drawer/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Tile_Drawer/info.json @@ -1,5 +1,7 @@ { "tooltip":"Draw using tileset.", + "spr":"s_node_tile_drawer", + "pxc_version":118030.0, "baseNode":"Node_Tile_Drawer", "io":[ "surface", diff --git a/datafiles/data/Nodes/Internal/Generate/VFX/info.json b/datafiles/data/Nodes/Internal/Generate/Node_VFX_Group_Inline/info.json similarity index 89% rename from datafiles/data/Nodes/Internal/Generate/VFX/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_VFX_Group_Inline/info.json index 97dfa515f..59d723aa7 100644 --- a/datafiles/data/Nodes/Internal/Generate/VFX/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_VFX_Group_Inline/info.json @@ -1,5 +1,6 @@ { "tooltip":"Create VFX group, which generate particles that can be manipulated using different force nodes.", + "spr":"s_node_vfx", "baseNode":"Node_VFX_Group_Inline", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Extra Voronoi/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Voronoi_Extra/info.json similarity index 85% rename from datafiles/data/Nodes/Internal/Generate/Extra Voronoi/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Voronoi_Extra/info.json index 228fd22a5..136468268 100644 --- a/datafiles/data/Nodes/Internal/Generate/Extra Voronoi/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Voronoi_Extra/info.json @@ -3,6 +3,7 @@ "alias":[ "noise" ], + "spr":"s_node_voronoi_extra", "baseNode":"Node_Voronoi_Extra", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Wavelet Noise/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Wavelet_Noise/info.json similarity index 80% rename from datafiles/data/Nodes/Internal/Generate/Wavelet Noise/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Wavelet_Noise/info.json index d13a7346e..d61660c9d 100644 --- a/datafiles/data/Nodes/Internal/Generate/Wavelet Noise/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Wavelet_Noise/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate wavelet noise", + "spr":"s_node_wavelet_noise", "baseNode":"Node_Wavelet_Noise", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Generate/Zigzag/info.json b/datafiles/data/Nodes/Internal/Generate/Node_Zigzag/info.json similarity index 82% rename from datafiles/data/Nodes/Internal/Generate/Zigzag/info.json rename to datafiles/data/Nodes/Internal/Generate/Node_Zigzag/info.json index 599b656e6..fc5ac3d25 100644 --- a/datafiles/data/Nodes/Internal/Generate/Zigzag/info.json +++ b/datafiles/data/Nodes/Internal/Generate/Node_Zigzag/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate zigzag pattern.", + "spr":"s_node_zigzag", "baseNode":"Node_Zigzag", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Loop/Input/info.json b/datafiles/data/Nodes/Internal/Group/Node_Group_Input/info.json similarity index 66% rename from datafiles/data/Nodes/Internal/Loop/Input/info.json rename to datafiles/data/Nodes/Internal/Group/Node_Group_Input/info.json index 07a748ffd..9be62189a 100644 --- a/datafiles/data/Nodes/Internal/Loop/Input/info.json +++ b/datafiles/data/Nodes/Internal/Group/Node_Group_Input/info.json @@ -1,5 +1,5 @@ { - "tooltip":"", + "spr":"s_node_group_input", "baseNode":"Node_Group_Input", "io":[ "any", @@ -12,5 +12,6 @@ "any", "any" ], - "name":"Input" + "name":"Input", + "show_in_recent":false } \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Filter/Output/info.json b/datafiles/data/Nodes/Internal/Group/Node_Group_Output/info.json similarity index 66% rename from datafiles/data/Nodes/Internal/Filter/Output/info.json rename to datafiles/data/Nodes/Internal/Group/Node_Group_Output/info.json index bbbf3e81d..c84ac4769 100644 --- a/datafiles/data/Nodes/Internal/Filter/Output/info.json +++ b/datafiles/data/Nodes/Internal/Group/Node_Group_Output/info.json @@ -1,5 +1,5 @@ { - "tooltip":"", + "spr":"s_node_group_output", "baseNode":"Node_Group_Output", "io":[ "any", @@ -12,5 +12,6 @@ "any", "any" ], - "name":"Output" + "name":"Output", + "show_in_recent":false } \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Group/Thumbnail/info.json b/datafiles/data/Nodes/Internal/Group/Node_Group_Thumbnail/info.json similarity index 61% rename from datafiles/data/Nodes/Internal/Group/Thumbnail/info.json rename to datafiles/data/Nodes/Internal/Group/Node_Group_Thumbnail/info.json index 3989c0db7..6e1b8df15 100644 --- a/datafiles/data/Nodes/Internal/Group/Thumbnail/info.json +++ b/datafiles/data/Nodes/Internal/Group/Node_Group_Thumbnail/info.json @@ -1,5 +1,5 @@ { - "tooltip":"", + "spr":"s_node_group_thumbnail", "baseNode":"Node_Group_Thumbnail", "io":[ "surface", @@ -8,5 +8,6 @@ "surface", "surface" ], - "name":"Thumbnail" + "name":"Thumbnail", + "show_in_recent":false } \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Feedback/info.json b/datafiles/data/Nodes/Internal/Hidden/Feedback/info.json deleted file mode 100644 index e47815d3f..000000000 --- a/datafiles/data/Nodes/Internal/Hidden/Feedback/info.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_Feedback_Inline", - "io":[ - ], - "name":"Feedback" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Filter Input/info.json b/datafiles/data/Nodes/Internal/Hidden/Filter Input/info.json deleted file mode 100644 index a5889abc5..000000000 --- a/datafiles/data/Nodes/Internal/Hidden/Filter Input/info.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_Iterator_Filter_Inline_Input", - "io":[ - ], - "name":"Filter Input" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Filter Output/info.json b/datafiles/data/Nodes/Internal/Hidden/Filter Output/info.json deleted file mode 100644 index 4b4efc032..000000000 --- a/datafiles/data/Nodes/Internal/Hidden/Filter Output/info.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_Iterator_Filter_Inline_Output", - "io":[ - ], - "name":"Filter Output" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Grid Noise/info.json b/datafiles/data/Nodes/Internal/Hidden/Grid Noise/info.json deleted file mode 100644 index 71c1a5fc9..000000000 --- a/datafiles/data/Nodes/Internal/Hidden/Grid Noise/info.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_Grid_Noise", - "io":[ - ], - "name":"Grid Noise" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Hexagonal Noise/info.json b/datafiles/data/Nodes/Internal/Hidden/Hexagonal Noise/info.json deleted file mode 100644 index f620aa694..000000000 --- a/datafiles/data/Nodes/Internal/Hidden/Hexagonal Noise/info.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_Noise_Hex", - "io":[ - ], - "name":"Hexagonal Noise" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Input/info.json b/datafiles/data/Nodes/Internal/Hidden/Input/info.json deleted file mode 100644 index d2fae1b65..000000000 --- a/datafiles/data/Nodes/Internal/Hidden/Input/info.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_DynaSurf_In", - "io":[ - ], - "name":"Input" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Loop Array/info.json b/datafiles/data/Nodes/Internal/Hidden/Loop Array/info.json deleted file mode 100644 index afadf4af4..000000000 --- a/datafiles/data/Nodes/Internal/Hidden/Loop Array/info.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_Iterate_Each", - "io":[ - ], - "name":"Loop Array" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Loop Input/info.json b/datafiles/data/Nodes/Internal/Hidden/Loop Input/info.json deleted file mode 100644 index 3cf04ed9e..000000000 --- a/datafiles/data/Nodes/Internal/Hidden/Loop Input/info.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_Iterator_Each_Inline_Input", - "io":[ - ], - "name":"Loop Input" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Loop Output/info.json b/datafiles/data/Nodes/Internal/Hidden/Loop Output/info.json deleted file mode 100644 index 9568539bf..000000000 --- a/datafiles/data/Nodes/Internal/Hidden/Loop Output/info.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_Iterator_Each_Inline_Output", - "io":[ - ], - "name":"Loop Output" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Loop/info.json b/datafiles/data/Nodes/Internal/Hidden/Loop/info.json deleted file mode 100644 index 0930c5582..000000000 --- a/datafiles/data/Nodes/Internal/Hidden/Loop/info.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_Iterate_Inline", - "io":[ - ], - "name":"Loop" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Node_DynaSurf_In/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_DynaSurf_In/info.json new file mode 100644 index 000000000..7770009dc --- /dev/null +++ b/datafiles/data/Nodes/Internal/Hidden/Node_DynaSurf_In/info.json @@ -0,0 +1,8 @@ +{ + "spr":"s_node_pixel_builder", + "baseNode":"Node_DynaSurf_In", + "io":[ + ], + "name":"Input", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Node_DynaSurf_Out/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_DynaSurf_Out/info.json new file mode 100644 index 000000000..6cc19a4f2 --- /dev/null +++ b/datafiles/data/Nodes/Internal/Hidden/Node_DynaSurf_Out/info.json @@ -0,0 +1,8 @@ +{ + "spr":"s_node_pixel_builder", + "baseNode":"Node_DynaSurf_Out", + "io":[ + ], + "name":"Output", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Node_DynaSurf_Out_Height/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_DynaSurf_Out_Height/info.json new file mode 100644 index 000000000..90ce97037 --- /dev/null +++ b/datafiles/data/Nodes/Internal/Hidden/Node_DynaSurf_Out_Height/info.json @@ -0,0 +1,8 @@ +{ + "spr":"s_node_pixel_builder", + "baseNode":"Node_DynaSurf_Out_Height", + "io":[ + ], + "name":"getHeight", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Node_DynaSurf_Out_Width/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_DynaSurf_Out_Width/info.json new file mode 100644 index 000000000..eb065397e --- /dev/null +++ b/datafiles/data/Nodes/Internal/Hidden/Node_DynaSurf_Out_Width/info.json @@ -0,0 +1,8 @@ +{ + "spr":"s_node_pixel_builder", + "baseNode":"Node_DynaSurf_Out_Width", + "io":[ + ], + "name":"getWidth", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Node_Feedback_Inline/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_Feedback_Inline/info.json new file mode 100644 index 000000000..c7a5c987c --- /dev/null +++ b/datafiles/data/Nodes/Internal/Hidden/Node_Feedback_Inline/info.json @@ -0,0 +1,8 @@ +{ + "spr":"s_node_feedback", + "baseNode":"Node_Feedback_Inline", + "io":[ + ], + "name":"Feedback", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Node_Grid_Noise/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_Grid_Noise/info.json new file mode 100644 index 000000000..fb5043687 --- /dev/null +++ b/datafiles/data/Nodes/Internal/Hidden/Node_Grid_Noise/info.json @@ -0,0 +1,8 @@ +{ + "spr":"s_node_grid_noise", + "baseNode":"Node_Grid_Noise", + "io":[ + ], + "name":"Grid Noise", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Node_Iterate_Each/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_Iterate_Each/info.json new file mode 100644 index 000000000..6615ef768 --- /dev/null +++ b/datafiles/data/Nodes/Internal/Hidden/Node_Iterate_Each/info.json @@ -0,0 +1,8 @@ +{ + "spr":"s_node_loop_array", + "baseNode":"Node_Iterate_Each", + "io":[ + ], + "name":"Loop Array", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Filter Array/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_Iterate_Filter/info.json similarity index 68% rename from datafiles/data/Nodes/Internal/Hidden/Filter Array/info.json rename to datafiles/data/Nodes/Internal/Hidden/Node_Iterate_Filter/info.json index d6ed8c1b1..6e5581ead 100644 --- a/datafiles/data/Nodes/Internal/Hidden/Filter Array/info.json +++ b/datafiles/data/Nodes/Internal/Hidden/Node_Iterate_Filter/info.json @@ -1,5 +1,7 @@ { "tooltip":"Filter array using condition.", + "spr":"s_node_filter_array", + "show_in_recent":false, "baseNode":"Node_Iterate_Filter", "io":[ ], diff --git a/datafiles/data/Nodes/Internal/Hidden/Node_Iterate_Inline/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_Iterate_Inline/info.json new file mode 100644 index 000000000..fa850f624 --- /dev/null +++ b/datafiles/data/Nodes/Internal/Hidden/Node_Iterate_Inline/info.json @@ -0,0 +1,8 @@ +{ + "spr":"s_node_iterate", + "baseNode":"Node_Iterate_Inline", + "io":[ + ], + "name":"Loop", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Sort Array/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_Iterate_Sort/info.json similarity index 68% rename from datafiles/data/Nodes/Internal/Hidden/Sort Array/info.json rename to datafiles/data/Nodes/Internal/Hidden/Node_Iterate_Sort/info.json index 831a4c41c..6080c3f16 100644 --- a/datafiles/data/Nodes/Internal/Hidden/Sort Array/info.json +++ b/datafiles/data/Nodes/Internal/Hidden/Node_Iterate_Sort/info.json @@ -1,5 +1,7 @@ { "tooltip":"Sort array using node graph.", + "spr":"s_node_sort_array", + "show_in_recent":false, "baseNode":"Node_Iterate_Sort", "io":[ ], diff --git a/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Each_Inline_Input/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Each_Inline_Input/info.json new file mode 100644 index 000000000..551c7a7c4 --- /dev/null +++ b/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Each_Inline_Input/info.json @@ -0,0 +1,8 @@ +{ + "spr":"s_node_loop_array", + "baseNode":"Node_Iterator_Each_Inline_Input", + "io":[ + ], + "name":"Loop Input", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Each_Inline_Output/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Each_Inline_Output/info.json new file mode 100644 index 000000000..8484f33f0 --- /dev/null +++ b/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Each_Inline_Output/info.json @@ -0,0 +1,8 @@ +{ + "spr":"s_node_loop_array", + "baseNode":"Node_Iterator_Each_Inline_Output", + "io":[ + ], + "name":"Loop Output", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Each_Input/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Each_Input/info.json new file mode 100644 index 000000000..e6e2c9ebb --- /dev/null +++ b/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Each_Input/info.json @@ -0,0 +1,8 @@ +{ + "spr":"s_node_loop_input", + "baseNode":"Node_Iterator_Each_Input", + "io":[ + ], + "name":"Input", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Each_Output/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Each_Output/info.json new file mode 100644 index 000000000..f704b9393 --- /dev/null +++ b/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Each_Output/info.json @@ -0,0 +1,8 @@ +{ + "spr":"s_node_loop_output", + "baseNode":"Node_Iterator_Each_Output", + "io":[ + ], + "name":"Output", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Filter_Inline_Input/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Filter_Inline_Input/info.json new file mode 100644 index 000000000..793cba53e --- /dev/null +++ b/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Filter_Inline_Input/info.json @@ -0,0 +1,8 @@ +{ + "spr":"s_node_filter_array", + "baseNode":"Node_Iterator_Filter_Inline_Input", + "io":[ + ], + "name":"Filter Input", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Filter_Inline_Output/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Filter_Inline_Output/info.json new file mode 100644 index 000000000..ea7862ea5 --- /dev/null +++ b/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Filter_Inline_Output/info.json @@ -0,0 +1,8 @@ +{ + "spr":"s_node_filter_array", + "baseNode":"Node_Iterator_Filter_Inline_Output", + "io":[ + ], + "name":"Filter Output", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Filter_Input/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Filter_Input/info.json new file mode 100644 index 000000000..2b34203ba --- /dev/null +++ b/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Filter_Input/info.json @@ -0,0 +1,8 @@ +{ + "spr":"s_node_loop_input", + "baseNode":"Node_Iterator_Filter_Input", + "io":[ + ], + "name":"Input", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Filter_Output/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Filter_Output/info.json new file mode 100644 index 000000000..bd20e1c30 --- /dev/null +++ b/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Filter_Output/info.json @@ -0,0 +1,8 @@ +{ + "spr":"s_node_loop_output", + "baseNode":"Node_Iterator_Filter_Output", + "io":[ + ], + "name":"Output", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Sort_Inline_Input/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Sort_Inline_Input/info.json new file mode 100644 index 000000000..8787c9b82 --- /dev/null +++ b/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Sort_Inline_Input/info.json @@ -0,0 +1,8 @@ +{ + "spr":"s_node_sort_array", + "baseNode":"Node_Iterator_Sort_Inline_Input", + "io":[ + ], + "name":"Sort Input", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Sort_Inline_Output/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Sort_Inline_Output/info.json new file mode 100644 index 000000000..49676aee2 --- /dev/null +++ b/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Sort_Inline_Output/info.json @@ -0,0 +1,8 @@ +{ + "spr":"s_node_sort_array", + "baseNode":"Node_Iterator_Sort_Inline_Output", + "io":[ + ], + "name":"Sort Output", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Sort_Input/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Sort_Input/info.json new file mode 100644 index 000000000..fb72c9e6d --- /dev/null +++ b/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Sort_Input/info.json @@ -0,0 +1,8 @@ +{ + "spr":"s_node_grid_hex_noise", + "baseNode":"Node_Iterator_Sort_Input", + "io":[ + ], + "name":"Sort Input", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Sort_Output/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Sort_Output/info.json new file mode 100644 index 000000000..32676df7c --- /dev/null +++ b/datafiles/data/Nodes/Internal/Hidden/Node_Iterator_Sort_Output/info.json @@ -0,0 +1,8 @@ +{ + "spr":"s_node_grid_hex_noise", + "baseNode":"Node_Iterator_Sort_Output", + "io":[ + ], + "name":"Sort Output", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Node_Noise_Hex/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_Noise_Hex/info.json new file mode 100644 index 000000000..c51fb48e8 --- /dev/null +++ b/datafiles/data/Nodes/Internal/Hidden/Node_Noise_Hex/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_grid_hex_noise", + "pxc_version":1090.0, + "show_in_recent":false, + "baseNode":"Node_Noise_Hex", + "io":[ + ], + "name":"Hexagonal Noise" +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Node_Noise_Tri/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_Noise_Tri/info.json new file mode 100644 index 000000000..435d8e0a5 --- /dev/null +++ b/datafiles/data/Nodes/Internal/Hidden/Node_Noise_Tri/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_grid_tri_noise", + "pxc_version":1090.0, + "show_in_recent":false, + "baseNode":"Node_Noise_Tri", + "io":[ + ], + "name":"Triangular Noise" +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Node_Onion_Skin/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_Onion_Skin/info.json new file mode 100644 index 000000000..588bf8bfd --- /dev/null +++ b/datafiles/data/Nodes/Internal/Hidden/Node_Onion_Skin/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_cache", + "pxc_version":1147.0, + "show_in_recent":false, + "baseNode":"Node_Onion_Skin", + "io":[ + ], + "name":"Onion Skin" +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/RigidSim/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_Rigid_Group/info.json similarity index 62% rename from datafiles/data/Nodes/Internal/Hidden/RigidSim/info.json rename to datafiles/data/Nodes/Internal/Hidden/Node_Rigid_Group/info.json index 7e9aa0dff..7aa553d99 100644 --- a/datafiles/data/Nodes/Internal/Hidden/RigidSim/info.json +++ b/datafiles/data/Nodes/Internal/Hidden/Node_Rigid_Group/info.json @@ -1,5 +1,8 @@ { "tooltip":"Create group for rigidbody simulation.", + "spr":"s_node_rigid", + "pxc_version":1110.0, + "show_in_recent":false, "baseNode":"Node_Rigid_Group", "io":[ ], diff --git a/datafiles/data/Nodes/Internal/Hidden/SmokeSim/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_Smoke_Group/info.json similarity index 60% rename from datafiles/data/Nodes/Internal/Hidden/SmokeSim/info.json rename to datafiles/data/Nodes/Internal/Hidden/Node_Smoke_Group/info.json index 07e36e98c..2aa86b5cf 100644 --- a/datafiles/data/Nodes/Internal/Hidden/SmokeSim/info.json +++ b/datafiles/data/Nodes/Internal/Hidden/Node_Smoke_Group/info.json @@ -1,5 +1,8 @@ { "tooltip":"Create group for fluid simulation.", + "spr":"s_node_smoke_group", + "pxc_version":1120.0, + "show_in_recent":false, "baseNode":"Node_Smoke_Group", "io":[ ], diff --git a/datafiles/data/Nodes/Internal/Hidden/StrandSim/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_Strand_Group/info.json similarity index 61% rename from datafiles/data/Nodes/Internal/Hidden/StrandSim/info.json rename to datafiles/data/Nodes/Internal/Hidden/Node_Strand_Group/info.json index 681dd344b..4deb9dda6 100644 --- a/datafiles/data/Nodes/Internal/Hidden/StrandSim/info.json +++ b/datafiles/data/Nodes/Internal/Hidden/Node_Strand_Group/info.json @@ -1,5 +1,8 @@ { "tooltip":"Create group for hair simulation.", + "spr":"s_node_strand", + "pxc_version":1140.0, + "show_in_recent":false, "baseNode":"Node_Strand_Group", "io":[ ], diff --git a/datafiles/data/Nodes/Internal/Hidden/Node_VFX_Group/info.json b/datafiles/data/Nodes/Internal/Hidden/Node_VFX_Group/info.json new file mode 100644 index 000000000..bf3ac8d07 --- /dev/null +++ b/datafiles/data/Nodes/Internal/Hidden/Node_VFX_Group/info.json @@ -0,0 +1,8 @@ +{ + "spr":"s_node_vfx", + "baseNode":"Node_VFX_Group", + "io":[ + ], + "name":"VFX", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Onion Skin/info.json b/datafiles/data/Nodes/Internal/Hidden/Onion Skin/info.json deleted file mode 100644 index 7b452252b..000000000 --- a/datafiles/data/Nodes/Internal/Hidden/Onion Skin/info.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_Onion_Skin", - "io":[ - ], - "name":"Onion Skin" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Output/info.json b/datafiles/data/Nodes/Internal/Hidden/Output/info.json deleted file mode 100644 index e4c179a0d..000000000 --- a/datafiles/data/Nodes/Internal/Hidden/Output/info.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_DynaSurf_Out", - "io":[ - ], - "name":"Output" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Sort Input/info.json b/datafiles/data/Nodes/Internal/Hidden/Sort Input/info.json deleted file mode 100644 index 801a22911..000000000 --- a/datafiles/data/Nodes/Internal/Hidden/Sort Input/info.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_Iterator_Sort_Inline_Input", - "io":[ - ], - "name":"Sort Input" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Sort Output/info.json b/datafiles/data/Nodes/Internal/Hidden/Sort Output/info.json deleted file mode 100644 index 2787d987c..000000000 --- a/datafiles/data/Nodes/Internal/Hidden/Sort Output/info.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_Iterator_Sort_Inline_Output", - "io":[ - ], - "name":"Sort Output" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/Triangular Noise/info.json b/datafiles/data/Nodes/Internal/Hidden/Triangular Noise/info.json deleted file mode 100644 index 3263b5c77..000000000 --- a/datafiles/data/Nodes/Internal/Hidden/Triangular Noise/info.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_Noise_Tri", - "io":[ - ], - "name":"Triangular Noise" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/VFX/info.json b/datafiles/data/Nodes/Internal/Hidden/VFX/info.json deleted file mode 100644 index ed4ea71a8..000000000 --- a/datafiles/data/Nodes/Internal/Hidden/VFX/info.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_VFX_Group", - "io":[ - ], - "name":"VFX" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/getHeight/info.json b/datafiles/data/Nodes/Internal/Hidden/getHeight/info.json deleted file mode 100644 index d040ebfc8..000000000 --- a/datafiles/data/Nodes/Internal/Hidden/getHeight/info.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_DynaSurf_Out_Height", - "io":[ - ], - "name":"getHeight" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Hidden/getWidth/info.json b/datafiles/data/Nodes/Internal/Hidden/getWidth/info.json deleted file mode 100644 index c38692726..000000000 --- a/datafiles/data/Nodes/Internal/Hidden/getWidth/info.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_DynaSurf_Out_Width", - "io":[ - ], - "name":"getWidth" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/IO/ASE File In/info.json b/datafiles/data/Nodes/Internal/IO/Node_ASE_File_Read/info.json similarity index 77% rename from datafiles/data/Nodes/Internal/IO/ASE File In/info.json rename to datafiles/data/Nodes/Internal/IO/Node_ASE_File_Read/info.json index aea5cd5a5..b738fa96b 100644 --- a/datafiles/data/Nodes/Internal/IO/ASE File In/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_ASE_File_Read/info.json @@ -1,5 +1,7 @@ { "tooltip":"Load Aseprite file with support for layers, tags.", + "spr":"s_node_ase_file_read", + "pxc_version":1100.0, "baseNode":"Node_ASE_File_Read", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/IO/ASE Tag/info.json b/datafiles/data/Nodes/Internal/IO/Node_ASE_Tag/info.json similarity index 68% rename from datafiles/data/Nodes/Internal/IO/ASE Tag/info.json rename to datafiles/data/Nodes/Internal/IO/Node_ASE_Tag/info.json index 6db00eb07..9ae6849cb 100644 --- a/datafiles/data/Nodes/Internal/IO/ASE Tag/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_ASE_Tag/info.json @@ -1,5 +1,7 @@ { "tooltip":"Read tag from ASE file.", + "spr":"s_node_ase_layer", + "pxc_version":118030.0, "baseNode":"Node_ASE_Tag", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/IO/ASE Layer/info.json b/datafiles/data/Nodes/Internal/IO/Node_ASE_layer/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/IO/ASE Layer/info.json rename to datafiles/data/Nodes/Internal/IO/Node_ASE_layer/info.json index 06106e53a..4bd9721ff 100644 --- a/datafiles/data/Nodes/Internal/IO/ASE Layer/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_ASE_layer/info.json @@ -1,5 +1,7 @@ { "tooltip":"Load Aseprite project file", + "spr":"s_node_ase_layer", + "pxc_version":1100.0, "baseNode":"Node_ASE_layer", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/IO/Active Canvas/info.json b/datafiles/data/Nodes/Internal/IO/Node_Active_Canvas/info.json similarity index 74% rename from datafiles/data/Nodes/Internal/IO/Active Canvas/info.json rename to datafiles/data/Nodes/Internal/IO/Node_Active_Canvas/info.json index b7acb6a31..b33c45f5b 100644 --- a/datafiles/data/Nodes/Internal/IO/Active Canvas/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_Active_Canvas/info.json @@ -3,6 +3,8 @@ "alias":[ "draw" ], + "spr":"s_node_active_canvas", + "pxc_version":11570.0, "baseNode":"Node_Active_Canvas", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/IO/Byte File In/info.json b/datafiles/data/Nodes/Internal/IO/Node_Byte_File_Read/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/IO/Byte File In/info.json rename to datafiles/data/Nodes/Internal/IO/Node_Byte_File_Read/info.json index f4c951195..55108739d 100644 --- a/datafiles/data/Nodes/Internal/IO/Byte File In/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_Byte_File_Read/info.json @@ -1,5 +1,7 @@ { "tooltip":"Load any file to buffer.", + "spr":"s_node_byte_file_read", + "pxc_version":11670.0, "baseNode":"Node_Byte_File_Read", "io":[ "text", diff --git a/datafiles/data/Nodes/Internal/IO/Byte File Out/info.json b/datafiles/data/Nodes/Internal/IO/Node_Byte_File_Write/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/IO/Byte File Out/info.json rename to datafiles/data/Nodes/Internal/IO/Node_Byte_File_Write/info.json index 32f7c5f7b..7ed546b85 100644 --- a/datafiles/data/Nodes/Internal/IO/Byte File Out/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_Byte_File_Write/info.json @@ -1,5 +1,7 @@ { "tooltip":"Save buffer content to a file.", + "spr":"s_node_byte_file_write", + "pxc_version":11670.0, "baseNode":"Node_Byte_File_Write", "io":[ "text", diff --git a/datafiles/data/Nodes/Internal/IO/CSV File In/info.json b/datafiles/data/Nodes/Internal/IO/Node_CSV_File_Read/info.json similarity index 77% rename from datafiles/data/Nodes/Internal/IO/CSV File In/info.json rename to datafiles/data/Nodes/Internal/IO/Node_CSV_File_Read/info.json index 59596cd5a..1cd3c73b8 100644 --- a/datafiles/data/Nodes/Internal/IO/CSV File In/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_CSV_File_Read/info.json @@ -3,6 +3,8 @@ "alias":[ "comma separated value" ], + "spr":"s_node_csv_file_read", + "pxc_version":1090.0, "baseNode":"Node_CSV_File_Read", "io":[ "text", diff --git a/datafiles/data/Nodes/Internal/IO/CSV File Out/info.json b/datafiles/data/Nodes/Internal/IO/Node_CSV_File_Write/info.json similarity index 76% rename from datafiles/data/Nodes/Internal/IO/CSV File Out/info.json rename to datafiles/data/Nodes/Internal/IO/Node_CSV_File_Write/info.json index 5909c6592..b9c40eb3e 100644 --- a/datafiles/data/Nodes/Internal/IO/CSV File Out/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_CSV_File_Write/info.json @@ -3,6 +3,8 @@ "alias":[ "comma separated value" ], + "spr":"s_node_csv_file_write", + "pxc_version":1090.0, "baseNode":"Node_CSV_File_Write", "io":[ "text", diff --git a/datafiles/data/Nodes/Internal/IO/Cache Array/info.json b/datafiles/data/Nodes/Internal/IO/Node_Cache_Array/info.json similarity index 75% rename from datafiles/data/Nodes/Internal/IO/Cache Array/info.json rename to datafiles/data/Nodes/Internal/IO/Node_Cache_Array/info.json index d70463865..a013f214e 100644 --- a/datafiles/data/Nodes/Internal/IO/Cache Array/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_Cache_Array/info.json @@ -1,5 +1,7 @@ { "tooltip":"Store current animation as array. Cache persisted between save.", + "spr":"s_node_cache_array", + "pxc_version":1130.0, "baseNode":"Node_Cache_Array", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/IO/Canvas/info.json b/datafiles/data/Nodes/Internal/IO/Node_Canvas/info.json similarity index 86% rename from datafiles/data/Nodes/Internal/IO/Canvas/info.json rename to datafiles/data/Nodes/Internal/IO/Node_Canvas/info.json index 29c0a24f2..dac330885 100644 --- a/datafiles/data/Nodes/Internal/IO/Canvas/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_Canvas/info.json @@ -3,6 +3,7 @@ "alias":[ "draw" ], + "spr":"s_node_canvas", "baseNode":"Node_Canvas", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/IO/Canvas Group/info.json b/datafiles/data/Nodes/Internal/IO/Node_Canvas_Group/info.json similarity index 77% rename from datafiles/data/Nodes/Internal/IO/Canvas Group/info.json rename to datafiles/data/Nodes/Internal/IO/Node_Canvas_Group/info.json index 95661b9a7..23c2460f1 100644 --- a/datafiles/data/Nodes/Internal/IO/Canvas Group/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_Canvas_Group/info.json @@ -3,6 +3,8 @@ "alias":[ "draw" ], + "spr":"s_node_canvas_group", + "pxc_version":11740.0, "baseNode":"Node_Canvas_Group", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/IO/Directory Search/info.json b/datafiles/data/Nodes/Internal/IO/Node_Directory_Search/info.json similarity index 75% rename from datafiles/data/Nodes/Internal/IO/Directory Search/info.json rename to datafiles/data/Nodes/Internal/IO/Node_Directory_Search/info.json index 1a8cffa0a..e6f91e861 100644 --- a/datafiles/data/Nodes/Internal/IO/Directory Search/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_Directory_Search/info.json @@ -1,5 +1,7 @@ { "tooltip":"Search for files in directory.", + "spr":"s_node_directory_search", + "pxc_version":11710.0, "baseNode":"Node_Directory_Search", "io":[ "text" diff --git a/datafiles/data/Nodes/Internal/Compose/Export/info.json b/datafiles/data/Nodes/Internal/IO/Node_Export/info.json similarity index 87% rename from datafiles/data/Nodes/Internal/Compose/Export/info.json rename to datafiles/data/Nodes/Internal/IO/Node_Export/info.json index 0aecbb7c5..17d628148 100644 --- a/datafiles/data/Nodes/Internal/Compose/Export/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_Export/info.json @@ -1,5 +1,6 @@ { "tooltip":"Export image\/animation to file(s).", + "spr":"s_node_export", "baseNode":"Node_Export", "io":[ "surface", diff --git a/datafiles/data/Nodes/Internal/IO/GMRoom/info.json b/datafiles/data/Nodes/Internal/IO/Node_GMRoom/info.json similarity index 57% rename from datafiles/data/Nodes/Internal/IO/GMRoom/info.json rename to datafiles/data/Nodes/Internal/IO/Node_GMRoom/info.json index 828f005df..9b7bd32ce 100644 --- a/datafiles/data/Nodes/Internal/IO/GMRoom/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_GMRoom/info.json @@ -1,5 +1,6 @@ { - "tooltip":"", + "spr":"s_gmroom", + "pxc_version":118041.0, "baseNode":"Node_GMRoom", "io":[ ], diff --git a/datafiles/data/Nodes/Internal/IO/HTTP/info.json b/datafiles/data/Nodes/Internal/IO/Node_HTTP_request/info.json similarity index 67% rename from datafiles/data/Nodes/Internal/IO/HTTP/info.json rename to datafiles/data/Nodes/Internal/IO/Node_HTTP_request/info.json index 4b90336dd..93c1a44ac 100644 --- a/datafiles/data/Nodes/Internal/IO/HTTP/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_HTTP_request/info.json @@ -1,5 +1,7 @@ { "tooltip":"Request data from the internet.", + "spr":"s_node_http_request", + "pxc_version":11780.0, "baseNode":"Node_HTTP_request", "io":[ ], diff --git a/datafiles/data/Nodes/Internal/IO/Image/info.json b/datafiles/data/Nodes/Internal/IO/Node_Image/info.json similarity index 87% rename from datafiles/data/Nodes/Internal/IO/Image/info.json rename to datafiles/data/Nodes/Internal/IO/Node_Image/info.json index d0afb412a..44a7d4e20 100644 --- a/datafiles/data/Nodes/Internal/IO/Image/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_Image/info.json @@ -1,5 +1,6 @@ { "tooltip":"Load a single image from your computer.", + "spr":"s_node_image", "baseNode":"Node_Image", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/IO/Animation/info.json b/datafiles/data/Nodes/Internal/IO/Node_Image_Animated/info.json similarity index 85% rename from datafiles/data/Nodes/Internal/IO/Animation/info.json rename to datafiles/data/Nodes/Internal/IO/Node_Image_Animated/info.json index d831dca2b..98174ed22 100644 --- a/datafiles/data/Nodes/Internal/IO/Animation/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_Image_Animated/info.json @@ -1,5 +1,6 @@ { "tooltip":"Load multiple images from your computer as animation.", + "spr":"s_node_image_animated", "baseNode":"Node_Image_Animated", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/IO/Image Array/info.json b/datafiles/data/Nodes/Internal/IO/Node_Image_Sequence/info.json similarity index 85% rename from datafiles/data/Nodes/Internal/IO/Image Array/info.json rename to datafiles/data/Nodes/Internal/IO/Node_Image_Sequence/info.json index 788711741..32a665a3d 100644 --- a/datafiles/data/Nodes/Internal/IO/Image Array/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_Image_Sequence/info.json @@ -1,5 +1,6 @@ { "tooltip":"Load multiple images from your computer as array.", + "spr":"s_node_image_sequence", "baseNode":"Node_Image_Sequence", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/IO/Splice Spritesheet/info.json b/datafiles/data/Nodes/Internal/IO/Node_Image_Sheet/info.json similarity index 84% rename from datafiles/data/Nodes/Internal/IO/Splice Spritesheet/info.json rename to datafiles/data/Nodes/Internal/IO/Node_Image_Sheet/info.json index 471cfd1d6..9715fb454 100644 --- a/datafiles/data/Nodes/Internal/IO/Splice Spritesheet/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_Image_Sheet/info.json @@ -1,5 +1,6 @@ { "tooltip":"Cut up spritesheet into animation or image array.", + "spr":"s_node_image_sheet", "baseNode":"Node_Image_Sheet", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/IO/Image GIF/info.json b/datafiles/data/Nodes/Internal/IO/Node_Image_gif/info.json similarity index 86% rename from datafiles/data/Nodes/Internal/IO/Image GIF/info.json rename to datafiles/data/Nodes/Internal/IO/Node_Image_gif/info.json index 220523e58..24de493b7 100644 --- a/datafiles/data/Nodes/Internal/IO/Image GIF/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_Image_gif/info.json @@ -1,5 +1,6 @@ { "tooltip":"Load animated .gif from your computer.", + "spr":"s_node_image_gif", "baseNode":"Node_Image_gif", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/IO/JSON File In/info.json b/datafiles/data/Nodes/Internal/IO/Node_Json_File_Read/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/IO/JSON File In/info.json rename to datafiles/data/Nodes/Internal/IO/Node_Json_File_Read/info.json index 7cc5e4016..d7a7f9c4e 100644 --- a/datafiles/data/Nodes/Internal/IO/JSON File In/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_Json_File_Read/info.json @@ -1,5 +1,7 @@ { "tooltip":"Load .json file using keys.", + "spr":"s_node_json_file_read", + "pxc_version":1090.0, "baseNode":"Node_Json_File_Read", "io":[ "text", diff --git a/datafiles/data/Nodes/Internal/IO/JSON File Out/info.json b/datafiles/data/Nodes/Internal/IO/Node_Json_File_Write/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/IO/JSON File Out/info.json rename to datafiles/data/Nodes/Internal/IO/Node_Json_File_Write/info.json index 5f8260e14..177cedb27 100644 --- a/datafiles/data/Nodes/Internal/IO/JSON File Out/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_Json_File_Write/info.json @@ -1,5 +1,7 @@ { "tooltip":"Save data to .json file.", + "spr":"s_node_json_file_write", + "pxc_version":1090.0, "baseNode":"Node_Json_File_Write", "io":[ "text", diff --git a/datafiles/data/Nodes/Internal/IO/MIDI In/info.json b/datafiles/data/Nodes/Internal/IO/Node_MIDI_In/info.json similarity index 66% rename from datafiles/data/Nodes/Internal/IO/MIDI In/info.json rename to datafiles/data/Nodes/Internal/IO/Node_MIDI_In/info.json index 91400375d..df30ebe22 100644 --- a/datafiles/data/Nodes/Internal/IO/MIDI In/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_MIDI_In/info.json @@ -1,5 +1,7 @@ { "tooltip":"Receive MIDI message.", + "spr":"s_node_midi_in", + "pxc_version":11630.0, "baseNode":"Node_MIDI_In", "io":[ ], diff --git a/datafiles/data/Nodes/Internal/IO/SVG/info.json b/datafiles/data/Nodes/Internal/IO/Node_SVG/info.json similarity index 82% rename from datafiles/data/Nodes/Internal/IO/SVG/info.json rename to datafiles/data/Nodes/Internal/IO/Node_SVG/info.json index bd871e1b2..25a54aaa3 100644 --- a/datafiles/data/Nodes/Internal/IO/SVG/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_SVG/info.json @@ -1,5 +1,6 @@ { "tooltip":"Load a SVG file.", + "spr":"s_node_svg", "baseNode":"Node_SVG", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/IO/Array to Anim/info.json b/datafiles/data/Nodes/Internal/IO/Node_Sequence_Anim/info.json similarity index 82% rename from datafiles/data/Nodes/Internal/IO/Array to Anim/info.json rename to datafiles/data/Nodes/Internal/IO/Node_Sequence_Anim/info.json index 9ecd1ad4f..1b327d0e8 100644 --- a/datafiles/data/Nodes/Internal/IO/Array to Anim/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_Sequence_Anim/info.json @@ -1,5 +1,6 @@ { "tooltip":"Convert array of images into animation.", + "spr":"s_node_sequence_anim", "baseNode":"Node_Sequence_Anim", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/IO/Spout Sender/info.json b/datafiles/data/Nodes/Internal/IO/Node_Spout_Send/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/IO/Spout Sender/info.json rename to datafiles/data/Nodes/Internal/IO/Node_Spout_Send/info.json index 3801b0955..f59cf16ba 100644 --- a/datafiles/data/Nodes/Internal/IO/Spout Sender/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_Spout_Send/info.json @@ -1,5 +1,7 @@ { "tooltip":"Send surface through Spout.", + "spr":"s_node_spout_send", + "pxc_version":11600.0, "baseNode":"Node_Spout_Send", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/IO/Text File In/info.json b/datafiles/data/Nodes/Internal/IO/Node_Text_File_Read/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/IO/Text File In/info.json rename to datafiles/data/Nodes/Internal/IO/Node_Text_File_Read/info.json index 1ffade343..bdca33950 100644 --- a/datafiles/data/Nodes/Internal/IO/Text File In/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_Text_File_Read/info.json @@ -3,6 +3,8 @@ "alias":[ "txt" ], + "spr":"s_node_text_file_read", + "pxc_version":1080.0, "baseNode":"Node_Text_File_Read", "io":[ "text" diff --git a/datafiles/data/Nodes/Internal/IO/Text File Out/info.json b/datafiles/data/Nodes/Internal/IO/Node_Text_File_Write/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/IO/Text File Out/info.json rename to datafiles/data/Nodes/Internal/IO/Node_Text_File_Write/info.json index 7c42059b5..f226a34da 100644 --- a/datafiles/data/Nodes/Internal/IO/Text File Out/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_Text_File_Write/info.json @@ -3,6 +3,8 @@ "alias":[ "txt" ], + "spr":"s_node_text_file_write", + "pxc_version":1090.0, "baseNode":"Node_Text_File_Write", "io":[ "text" diff --git a/datafiles/data/Nodes/Internal/IO/Convert to Tilemap/info.json b/datafiles/data/Nodes/Internal/IO/Node_Tile_Convert/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/IO/Convert to Tilemap/info.json rename to datafiles/data/Nodes/Internal/IO/Node_Tile_Convert/info.json index 41a2584c7..e657305ed 100644 --- a/datafiles/data/Nodes/Internal/IO/Convert to Tilemap/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_Tile_Convert/info.json @@ -1,5 +1,7 @@ { "tooltip":"Convert color image to tile data.", + "spr":"s_node_tile_convert", + "pxc_version":118030.0, "baseNode":"Node_Tile_Convert", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/IO/Tile Drawer/info.json b/datafiles/data/Nodes/Internal/IO/Node_Tile_Drawer/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/IO/Tile Drawer/info.json rename to datafiles/data/Nodes/Internal/IO/Node_Tile_Drawer/info.json index 93841aa7b..e13a841f9 100644 --- a/datafiles/data/Nodes/Internal/IO/Tile Drawer/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_Tile_Drawer/info.json @@ -1,5 +1,7 @@ { "tooltip":"Draw using tileset.", + "spr":"s_node_tile_drawer", + "pxc_version":118030.0, "baseNode":"Node_Tile_Drawer", "io":[ "surface", diff --git a/datafiles/data/Nodes/Internal/IO/Render Tilemap/info.json b/datafiles/data/Nodes/Internal/IO/Node_Tile_Render/info.json similarity index 69% rename from datafiles/data/Nodes/Internal/IO/Render Tilemap/info.json rename to datafiles/data/Nodes/Internal/IO/Node_Tile_Render/info.json index 2e7f96cca..7ddf12869 100644 --- a/datafiles/data/Nodes/Internal/IO/Render Tilemap/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_Tile_Render/info.json @@ -1,5 +1,7 @@ { "tooltip":"Render tilemap to image.", + "spr":"s_node_tile_render", + "pxc_version":118030.0, "baseNode":"Node_Tile_Render", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/IO/Tile Rule/info.json b/datafiles/data/Nodes/Internal/IO/Node_Tile_Rule/info.json similarity index 68% rename from datafiles/data/Nodes/Internal/IO/Tile Rule/info.json rename to datafiles/data/Nodes/Internal/IO/Node_Tile_Rule/info.json index b020ee14b..36675ae91 100644 --- a/datafiles/data/Nodes/Internal/IO/Tile Rule/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_Tile_Rule/info.json @@ -1,5 +1,7 @@ { "tooltip":"Apply tileset rules.", + "spr":"s_node_tile_rule", + "pxc_version":118030.0, "baseNode":"Node_Tile_Rule", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/IO/Export Tilemap/info.json b/datafiles/data/Nodes/Internal/IO/Node_Tile_Tilemap_Export/info.json similarity index 68% rename from datafiles/data/Nodes/Internal/IO/Export Tilemap/info.json rename to datafiles/data/Nodes/Internal/IO/Node_Tile_Tilemap_Export/info.json index 0bcb89707..827311ea6 100644 --- a/datafiles/data/Nodes/Internal/IO/Export Tilemap/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_Tile_Tilemap_Export/info.json @@ -1,5 +1,7 @@ { "tooltip":"Export tilemap to file.", + "spr":"s_node_tile_tilemap_export", + "pxc_version":118030.0, "baseNode":"Node_Tile_Tilemap_Export", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/IO/Tileset/info.json b/datafiles/data/Nodes/Internal/IO/Node_Tile_Tileset/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/IO/Tileset/info.json rename to datafiles/data/Nodes/Internal/IO/Node_Tile_Tileset/info.json index d22428d08..5b9750a3a 100644 --- a/datafiles/data/Nodes/Internal/IO/Tileset/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_Tile_Tileset/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create tileset object.", + "spr":"s_node_tile_tileset", + "pxc_version":118030.0, "baseNode":"Node_Tile_Tileset", "io":[ "surface", diff --git a/datafiles/data/Nodes/Internal/Animation/WAV File In/info.json b/datafiles/data/Nodes/Internal/IO/Node_WAV_File_Read/info.json similarity index 78% rename from datafiles/data/Nodes/Internal/Animation/WAV File In/info.json rename to datafiles/data/Nodes/Internal/IO/Node_WAV_File_Read/info.json index 65372d01a..162e42051 100644 --- a/datafiles/data/Nodes/Internal/Animation/WAV File In/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_WAV_File_Read/info.json @@ -1,5 +1,7 @@ { "tooltip":"Load wav audio file.", + "spr":"s_node_wav_file_read", + "pxc_version":1144.0, "baseNode":"Node_WAV_File_Read", "io":[ "text", diff --git a/datafiles/data/Nodes/Internal/IO/WAV File Out/info.json b/datafiles/data/Nodes/Internal/IO/Node_WAV_File_Write/info.json similarity index 74% rename from datafiles/data/Nodes/Internal/IO/WAV File Out/info.json rename to datafiles/data/Nodes/Internal/IO/Node_WAV_File_Write/info.json index 085bae1bd..bc0607e55 100644 --- a/datafiles/data/Nodes/Internal/IO/WAV File Out/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_WAV_File_Write/info.json @@ -1,5 +1,7 @@ { "tooltip":"Save wav audio file.", + "spr":"s_node_wav_file_write", + "pxc_version":1145.0, "baseNode":"Node_WAV_File_Write", "io":[ "text", diff --git a/datafiles/data/Nodes/Internal/IO/Websocket Receiver/info.json b/datafiles/data/Nodes/Internal/IO/Node_Websocket_Receiver/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/IO/Websocket Receiver/info.json rename to datafiles/data/Nodes/Internal/IO/Node_Websocket_Receiver/info.json index c4c66680f..310f898f6 100644 --- a/datafiles/data/Nodes/Internal/IO/Websocket Receiver/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_Websocket_Receiver/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create websocket server to receive data from the network.", + "spr":"s_node_websocket_receiver", + "pxc_version":1145.0, "baseNode":"Node_Websocket_Receiver", "io":[ ], diff --git a/datafiles/data/Nodes/Internal/IO/Websocket Sender/info.json b/datafiles/data/Nodes/Internal/IO/Node_Websocket_Sender/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/IO/Websocket Sender/info.json rename to datafiles/data/Nodes/Internal/IO/Node_Websocket_Sender/info.json index 107a85056..ee879ebef 100644 --- a/datafiles/data/Nodes/Internal/IO/Websocket Sender/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_Websocket_Sender/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create websocket server to send data to the network.", + "spr":"s_node_websocket_sender", + "pxc_version":1145.0, "baseNode":"Node_Websocket_Sender", "io":[ ], diff --git a/datafiles/data/Nodes/Internal/IO/XML File In/info.json b/datafiles/data/Nodes/Internal/IO/Node_XML_File_Read/info.json similarity index 74% rename from datafiles/data/Nodes/Internal/IO/XML File In/info.json rename to datafiles/data/Nodes/Internal/IO/Node_XML_File_Read/info.json index 93330af59..21eecaa76 100644 --- a/datafiles/data/Nodes/Internal/IO/XML File In/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_XML_File_Read/info.json @@ -1,5 +1,7 @@ { "tooltip":"Load xml file.", + "spr":"s_node_xml_file_read", + "pxc_version":11720.0, "baseNode":"Node_XML_File_Read", "io":[ "text", diff --git a/datafiles/data/Nodes/Internal/IO/XML File Out/info.json b/datafiles/data/Nodes/Internal/IO/Node_XML_File_Write/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/IO/XML File Out/info.json rename to datafiles/data/Nodes/Internal/IO/Node_XML_File_Write/info.json index 28429b423..c722b4a94 100644 --- a/datafiles/data/Nodes/Internal/IO/XML File Out/info.json +++ b/datafiles/data/Nodes/Internal/IO/Node_XML_File_Write/info.json @@ -1,5 +1,7 @@ { "tooltip":"Write struct to xml file.", + "spr":"s_node_xml_file_write", + "pxc_version":11720.0, "baseNode":"Node_XML_File_Write", "io":[ "text", diff --git a/datafiles/data/Nodes/Internal/Loop/Loop Input/info.json b/datafiles/data/Nodes/Internal/Loop/Loop Input/info.json deleted file mode 100644 index 63c03305d..000000000 --- a/datafiles/data/Nodes/Internal/Loop/Loop Input/info.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_Iterator_Input", - "io":[ - "any" - ], - "name":"Loop Input" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Loop/Loop Output/info.json b/datafiles/data/Nodes/Internal/Loop/Loop Output/info.json deleted file mode 100644 index 62a51b33a..000000000 --- a/datafiles/data/Nodes/Internal/Loop/Loop Output/info.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_Iterator_Output", - "io":[ - "any" - ], - "name":"Loop Output" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Group/Input/info.json b/datafiles/data/Nodes/Internal/Loop/Node_Group_Input/info.json similarity index 66% rename from datafiles/data/Nodes/Internal/Group/Input/info.json rename to datafiles/data/Nodes/Internal/Loop/Node_Group_Input/info.json index 07a748ffd..9be62189a 100644 --- a/datafiles/data/Nodes/Internal/Group/Input/info.json +++ b/datafiles/data/Nodes/Internal/Loop/Node_Group_Input/info.json @@ -1,5 +1,5 @@ { - "tooltip":"", + "spr":"s_node_group_input", "baseNode":"Node_Group_Input", "io":[ "any", @@ -12,5 +12,6 @@ "any", "any" ], - "name":"Input" + "name":"Input", + "show_in_recent":false } \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/RigidSim/Output/info.json b/datafiles/data/Nodes/Internal/Loop/Node_Group_Output/info.json similarity index 66% rename from datafiles/data/Nodes/Internal/RigidSim/Output/info.json rename to datafiles/data/Nodes/Internal/Loop/Node_Group_Output/info.json index bbbf3e81d..c84ac4769 100644 --- a/datafiles/data/Nodes/Internal/RigidSim/Output/info.json +++ b/datafiles/data/Nodes/Internal/Loop/Node_Group_Output/info.json @@ -1,5 +1,5 @@ { - "tooltip":"", + "spr":"s_node_group_output", "baseNode":"Node_Group_Output", "io":[ "any", @@ -12,5 +12,6 @@ "any", "any" ], - "name":"Output" + "name":"Output", + "show_in_recent":false } \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Loop/Thumbnail/info.json b/datafiles/data/Nodes/Internal/Loop/Node_Group_Thumbnail/info.json similarity index 61% rename from datafiles/data/Nodes/Internal/Loop/Thumbnail/info.json rename to datafiles/data/Nodes/Internal/Loop/Node_Group_Thumbnail/info.json index 3989c0db7..6e1b8df15 100644 --- a/datafiles/data/Nodes/Internal/Loop/Thumbnail/info.json +++ b/datafiles/data/Nodes/Internal/Loop/Node_Group_Thumbnail/info.json @@ -1,5 +1,5 @@ { - "tooltip":"", + "spr":"s_node_group_thumbnail", "baseNode":"Node_Group_Thumbnail", "io":[ "surface", @@ -8,5 +8,6 @@ "surface", "surface" ], - "name":"Thumbnail" + "name":"Thumbnail", + "show_in_recent":false } \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Loop/Array Length/info.json b/datafiles/data/Nodes/Internal/Loop/Node_Iterator_Each_Length/info.json similarity index 50% rename from datafiles/data/Nodes/Internal/Loop/Array Length/info.json rename to datafiles/data/Nodes/Internal/Loop/Node_Iterator_Each_Length/info.json index e5a93bea9..6f534a92a 100644 --- a/datafiles/data/Nodes/Internal/Loop/Array Length/info.json +++ b/datafiles/data/Nodes/Internal/Loop/Node_Iterator_Each_Length/info.json @@ -1,9 +1,10 @@ { - "tooltip":"", + "spr":"s_node_iterator_length", "baseNode":"Node_Iterator_Each_Length", "io":[ "float", "float" ], - "name":"Array Length" + "name":"Array Length", + "show_in_recent":false } \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Filter/Index/info.json b/datafiles/data/Nodes/Internal/Loop/Node_Iterator_Index/info.json similarity index 63% rename from datafiles/data/Nodes/Internal/Filter/Index/info.json rename to datafiles/data/Nodes/Internal/Loop/Node_Iterator_Index/info.json index 2c6dca88f..a8780ccc0 100644 --- a/datafiles/data/Nodes/Internal/Filter/Index/info.json +++ b/datafiles/data/Nodes/Internal/Loop/Node_Iterator_Index/info.json @@ -1,5 +1,5 @@ { - "tooltip":"", + "spr":"s_node_iterator_index", "baseNode":"Node_Iterator_Index", "io":[ "float", @@ -9,5 +9,6 @@ "float", "float" ], - "name":"Index" + "name":"Index", + "show_in_recent":false } \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Loop/Node_Iterator_Input/info.json b/datafiles/data/Nodes/Internal/Loop/Node_Iterator_Input/info.json new file mode 100644 index 000000000..f122e9dab --- /dev/null +++ b/datafiles/data/Nodes/Internal/Loop/Node_Iterator_Input/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_loop_input", + "baseNode":"Node_Iterator_Input", + "io":[ + "any" + ], + "name":"Loop Input", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Filter/Loop amount/info.json b/datafiles/data/Nodes/Internal/Loop/Node_Iterator_Length/info.json similarity index 55% rename from datafiles/data/Nodes/Internal/Filter/Loop amount/info.json rename to datafiles/data/Nodes/Internal/Loop/Node_Iterator_Length/info.json index e10261ef7..fe936e06d 100644 --- a/datafiles/data/Nodes/Internal/Filter/Loop amount/info.json +++ b/datafiles/data/Nodes/Internal/Loop/Node_Iterator_Length/info.json @@ -1,5 +1,5 @@ { - "tooltip":"", + "spr":"s_node_iterator_amount", "baseNode":"Node_Iterator_Length", "io":[ "float", @@ -7,5 +7,6 @@ "float", "float" ], - "name":"Loop amount" + "name":"Loop amount", + "show_in_recent":false } \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Loop/Node_Iterator_Output/info.json b/datafiles/data/Nodes/Internal/Loop/Node_Iterator_Output/info.json new file mode 100644 index 000000000..dd821f96f --- /dev/null +++ b/datafiles/data/Nodes/Internal/Loop/Node_Iterator_Output/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_loop_output", + "baseNode":"Node_Iterator_Output", + "io":[ + "any" + ], + "name":"Loop Output", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Misc/Animation Control/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Animation_Control/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Misc/Animation Control/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Animation_Control/info.json index be1cb6c17..bacd38a68 100644 --- a/datafiles/data/Nodes/Internal/Misc/Animation Control/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Animation_Control/info.json @@ -1,5 +1,7 @@ { "tooltip":"Control animation state with triggers.", + "spr":"s_node_animation_control", + "pxc_version":1145.0, "baseNode":"Node_Animation_Control", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Misc/GUI In/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Application_In/info.json similarity index 76% rename from datafiles/data/Nodes/Internal/Misc/GUI In/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Application_In/info.json index de25fbc1b..9599f8553 100644 --- a/datafiles/data/Nodes/Internal/Misc/GUI In/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Application_In/info.json @@ -1,5 +1,5 @@ { - "tooltip":"", + "spr":"s_node_gui_in", "baseNode":"Node_Application_In", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Misc/GUI Out/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Application_Out/info.json similarity index 76% rename from datafiles/data/Nodes/Internal/Misc/GUI Out/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Application_Out/info.json index c1088fb19..922e588c9 100644 --- a/datafiles/data/Nodes/Internal/Misc/GUI Out/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Application_Out/info.json @@ -1,5 +1,5 @@ { - "tooltip":"", + "spr":"s_node_gui_out", "baseNode":"Node_Application_Out", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Misc/Argument/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Argument/info.json similarity index 59% rename from datafiles/data/Nodes/Internal/Misc/Argument/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Argument/info.json index 4b4e1710d..580f8fb83 100644 --- a/datafiles/data/Nodes/Internal/Misc/Argument/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Argument/info.json @@ -1,5 +1,6 @@ { - "tooltip":"", + "spr":"s_node_argument", + "pxc_version":11660.0, "baseNode":"Node_Argument", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Misc/Array Pin/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Array_Pin/info.json similarity index 75% rename from datafiles/data/Nodes/Internal/Misc/Array Pin/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Array_Pin/info.json index 686e3237f..b137243c3 100644 --- a/datafiles/data/Nodes/Internal/Misc/Array Pin/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Array_Pin/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create a pin that can receive multiple values and return an array.", + "spr":"s_node_array_pin", + "pxc_version":11770.0, "baseNode":"Node_Array_Pin", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Misc/Assert/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Assert/info.json similarity index 75% rename from datafiles/data/Nodes/Internal/Misc/Assert/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Assert/info.json index c1eaa5c81..d96bbabd0 100644 --- a/datafiles/data/Nodes/Internal/Misc/Assert/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Assert/info.json @@ -1,5 +1,5 @@ { - "tooltip":"", + "spr":"s_node_shell", "baseNode":"Node_Assert", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Misc/Cache/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Cache/info.json similarity index 74% rename from datafiles/data/Nodes/Internal/Misc/Cache/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Cache/info.json index a08d79fc1..edcd43732 100644 --- a/datafiles/data/Nodes/Internal/Misc/Cache/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Cache/info.json @@ -1,5 +1,7 @@ { "tooltip":"Store current animation. Cache persisted between save.", + "spr":"s_node_cache", + "pxc_version":1134.0, "baseNode":"Node_Cache", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Misc/Cache Array/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Cache_Array/info.json similarity index 75% rename from datafiles/data/Nodes/Internal/Misc/Cache Array/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Cache_Array/info.json index d70463865..a013f214e 100644 --- a/datafiles/data/Nodes/Internal/Misc/Cache Array/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Cache_Array/info.json @@ -1,5 +1,7 @@ { "tooltip":"Store current animation as array. Cache persisted between save.", + "spr":"s_node_cache_array", + "pxc_version":1130.0, "baseNode":"Node_Cache_Array", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Misc/Condition/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Condition/info.json similarity index 82% rename from datafiles/data/Nodes/Internal/Misc/Condition/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Condition/info.json index ee9251c35..0171ac173 100644 --- a/datafiles/data/Nodes/Internal/Misc/Condition/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Condition/info.json @@ -1,5 +1,6 @@ { "tooltip":"Output value based on conditions.", + "spr":"s_node_condition", "baseNode":"Node_Condition", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Misc/Display Image/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Display_Image/info.json similarity index 87% rename from datafiles/data/Nodes/Internal/Misc/Display Image/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Display_Image/info.json index 65f9eeda3..d294aee18 100644 --- a/datafiles/data/Nodes/Internal/Misc/Display Image/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Display_Image/info.json @@ -1,5 +1,6 @@ { "tooltip":"Display image on the graph.", + "spr":"s_node_image", "baseNode":"Node_Display_Image", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Misc/Display Text/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Display_Text/info.json similarity index 80% rename from datafiles/data/Nodes/Internal/Misc/Display Text/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Display_Text/info.json index 844af8271..fc7a20282 100644 --- a/datafiles/data/Nodes/Internal/Misc/Display Text/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Display_Text/info.json @@ -1,5 +1,6 @@ { "tooltip":"Display text on the graph.", + "spr":"s_node_display_text", "baseNode":"Node_Display_Text", "io":[ "text" diff --git a/datafiles/data/Nodes/Internal/Misc/Feedback/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Feedback/info.json similarity index 87% rename from datafiles/data/Nodes/Internal/Misc/Feedback/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Feedback/info.json index 0a725ad9c..7c709a3a9 100644 --- a/datafiles/data/Nodes/Internal/Misc/Feedback/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Feedback/info.json @@ -1,9 +1,10 @@ { "tooltip":"Create a group that reuse output from last frame to the current one.", + "spr":"s_node_feedback", + "deprecated":true, "baseNode":"Node_Feedback", "io":[ "any" ], - "deprecated":true, "name":"Feedback" } \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Misc/Frame/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Frame/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Misc/Frame/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Frame/info.json index 2005f4d54..70a30cca0 100644 --- a/datafiles/data/Nodes/Internal/Misc/Frame/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Frame/info.json @@ -1,5 +1,6 @@ { "tooltip":"Create frame surrounding nodes.", + "spr":"s_node_frame", "baseNode":"Node_Frame", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Misc/Graph Preview/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Graph_Preview/info.json similarity index 79% rename from datafiles/data/Nodes/Internal/Misc/Graph Preview/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Graph_Preview/info.json index 7a3ca2755..3a2f594f3 100644 --- a/datafiles/data/Nodes/Internal/Misc/Graph Preview/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Graph_Preview/info.json @@ -1,5 +1,5 @@ { - "tooltip":"", + "spr":"s_node_image", "baseNode":"Node_Graph_Preview", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Misc/Group/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Group/info.json similarity index 74% rename from datafiles/data/Nodes/Internal/Misc/Group/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Group/info.json index 6587143f4..f2fade9a0 100644 --- a/datafiles/data/Nodes/Internal/Misc/Group/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Group/info.json @@ -1,5 +1,5 @@ { - "tooltip":"", + "spr":"s_node_group", "baseNode":"Node_Group", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Misc/HLSL/info.json b/datafiles/data/Nodes/Internal/Misc/Node_HLSL/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Misc/HLSL/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_HLSL/info.json index 1992554b1..6a778c3ad 100644 --- a/datafiles/data/Nodes/Internal/Misc/HLSL/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_HLSL/info.json @@ -1,5 +1,7 @@ { "tooltip":"Execute HLSL shader on a surface.", + "spr":"s_node_hlsl", + "pxc_version":11520.0, "baseNode":"Node_HLSL", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Misc/Loop/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Iterate/info.json similarity index 86% rename from datafiles/data/Nodes/Internal/Misc/Loop/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Iterate/info.json index a379b8b5a..075fd7913 100644 --- a/datafiles/data/Nodes/Internal/Misc/Loop/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Iterate/info.json @@ -1,9 +1,10 @@ { "tooltip":"Create group that reuse output as input repeatedly in one frame.", + "spr":"s_node_iterate", + "deprecated":true, "baseNode":"Node_Iterate", "io":[ "any" ], - "deprecated":true, "name":"Loop" } \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Values/Loop Array/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Iterate_Each_Inline/info.json similarity index 89% rename from datafiles/data/Nodes/Internal/Values/Loop Array/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Iterate_Each_Inline/info.json index a3aea9d68..548897372 100644 --- a/datafiles/data/Nodes/Internal/Values/Loop Array/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Iterate_Each_Inline/info.json @@ -5,6 +5,7 @@ "for each", "array loop" ], + "spr":"s_node_loop_array", "baseNode":"Node_Iterate_Each_Inline", "io":[ "any", diff --git a/datafiles/data/Nodes/Internal/Misc/Filter Array/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Iterate_Filter_Inline/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/Misc/Filter Array/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Iterate_Filter_Inline/info.json index 59c852f0d..fbd5a7e61 100644 --- a/datafiles/data/Nodes/Internal/Misc/Filter Array/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Iterate_Filter_Inline/info.json @@ -1,5 +1,7 @@ { "tooltip":"Filter array using condition.", + "spr":"s_node_filter_array", + "pxc_version":1140.0, "baseNode":"Node_Iterate_Filter_Inline", "io":[ "any", diff --git a/datafiles/data/Nodes/Internal/Misc/Lua Compute/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Lua_Compute/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Misc/Lua Compute/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Lua_Compute/info.json index 68f568936..c7b83d83b 100644 --- a/datafiles/data/Nodes/Internal/Misc/Lua Compute/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Lua_Compute/info.json @@ -1,5 +1,7 @@ { "tooltip":"Execute lua function and returns a data.", + "spr":"s_node_lua_compute", + "pxc_version":1090.0, "baseNode":"Node_Lua_Compute", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Misc/Lua Global/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Lua_Global/info.json similarity index 75% rename from datafiles/data/Nodes/Internal/Misc/Lua Global/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Lua_Global/info.json index 9a8d23038..eab7dde4d 100644 --- a/datafiles/data/Nodes/Internal/Misc/Lua Global/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Lua_Global/info.json @@ -1,5 +1,7 @@ { "tooltip":"Execute lua script in global scope without returning any data.", + "spr":"s_node_lua_global", + "pxc_version":1090.0, "baseNode":"Node_Lua_Global", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Misc/Lua Surface/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Lua_Surface/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/Misc/Lua Surface/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Lua_Surface/info.json index eb12c7414..1f98cde71 100644 --- a/datafiles/data/Nodes/Internal/Misc/Lua Surface/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Lua_Surface/info.json @@ -1,5 +1,7 @@ { "tooltip":"Execute lua script on a surface.", + "spr":"s_node_lua_surface", + "pxc_version":1090.0, "baseNode":"Node_Lua_Surface", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Misc/Monitor Capture/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Monitor_Capture/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Misc/Monitor Capture/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Monitor_Capture/info.json index 2ff326510..967e3ec6a 100644 --- a/datafiles/data/Nodes/Internal/Misc/Monitor Capture/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Monitor_Capture/info.json @@ -1,5 +1,5 @@ { - "tooltip":"", + "spr":"s_node_monitor_capture", "baseNode":"Node_Monitor_Capture", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Misc/Pin/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Pin/info.json similarity index 89% rename from datafiles/data/Nodes/Internal/Misc/Pin/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Pin/info.json index eb32e24a5..d01ed4443 100644 --- a/datafiles/data/Nodes/Internal/Misc/Pin/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Pin/info.json @@ -1,5 +1,6 @@ { "tooltip":"Create a pin to organize your connection. Can be create by double clicking on a connection line.", + "spr":"s_node_pin", "baseNode":"Node_Pin", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Misc/Print/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Print/info.json similarity index 75% rename from datafiles/data/Nodes/Internal/Misc/Print/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Print/info.json index 432a2a6e5..753b77348 100644 --- a/datafiles/data/Nodes/Internal/Misc/Print/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Print/info.json @@ -3,6 +3,8 @@ "alias":[ "debug log" ], + "spr":"s_node_print", + "pxc_version":1145.0, "baseNode":"Node_Print", "io":[ "text" diff --git a/datafiles/data/Nodes/Internal/Misc/Project Data/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Project_Data/info.json similarity index 60% rename from datafiles/data/Nodes/Internal/Misc/Project Data/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Project_Data/info.json index c9409b4cc..0920e0093 100644 --- a/datafiles/data/Nodes/Internal/Misc/Project Data/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Project_Data/info.json @@ -1,5 +1,6 @@ { - "tooltip":"", + "spr":"s_node_project_data", + "pxc_version":11650.0, "baseNode":"Node_Project_Data", "io":[ "text" diff --git a/datafiles/data/Nodes/Internal/Misc/Execute Shell/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Shell/info.json similarity index 79% rename from datafiles/data/Nodes/Internal/Misc/Execute Shell/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Shell/info.json index 7b13b3a83..7c7cb783c 100644 --- a/datafiles/data/Nodes/Internal/Misc/Execute Shell/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Shell/info.json @@ -6,6 +6,8 @@ "run", "console" ], + "spr":"s_node_shell", + "pxc_version":11530.0, "baseNode":"Node_Shell", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Misc/Slideshow/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Slideshow/info.json similarity index 76% rename from datafiles/data/Nodes/Internal/Misc/Slideshow/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Slideshow/info.json index f509e5677..b06b1b742 100644 --- a/datafiles/data/Nodes/Internal/Misc/Slideshow/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Slideshow/info.json @@ -1,5 +1,5 @@ { - "tooltip":"", + "spr":"s_node_image", "baseNode":"Node_Slideshow", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Misc/Switch/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Switch/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/Misc/Switch/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Switch/info.json index 89b484894..a19c73f6f 100644 --- a/datafiles/data/Nodes/Internal/Misc/Switch/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Switch/info.json @@ -1,5 +1,7 @@ { "tooltip":"Output value based on index.", + "spr":"s_node_switch", + "pxc_version":1090.0, "baseNode":"Node_Switch", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Misc/Terminal trigger/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Terminal_Trigger/info.json similarity index 60% rename from datafiles/data/Nodes/Internal/Misc/Terminal trigger/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Terminal_Trigger/info.json index 91fcfd33d..ca6b81d7b 100644 --- a/datafiles/data/Nodes/Internal/Misc/Terminal trigger/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Terminal_Trigger/info.json @@ -1,5 +1,6 @@ { - "tooltip":"", + "spr":"s_node_terminal_trigger", + "pxc_version":11660.0, "baseNode":"Node_Terminal_Trigger", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Misc/Tunnel In/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Tunnel_In/info.json similarity index 84% rename from datafiles/data/Nodes/Internal/Misc/Tunnel In/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Tunnel_In/info.json index 94995451f..23cdd5af7 100644 --- a/datafiles/data/Nodes/Internal/Misc/Tunnel In/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Tunnel_In/info.json @@ -1,5 +1,6 @@ { "tooltip":"Create tunnel for sending value based on key matching.", + "spr":"s_node_tunnel_in", "baseNode":"Node_Tunnel_In", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Misc/Tunnel Out/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Tunnel_Out/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Misc/Tunnel Out/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Tunnel_Out/info.json index a7c8cdc3e..67db81537 100644 --- a/datafiles/data/Nodes/Internal/Misc/Tunnel Out/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Tunnel_Out/info.json @@ -1,5 +1,6 @@ { "tooltip":"Receive value from tunnel in of the same key.", + "spr":"s_node_tunnel_out", "baseNode":"Node_Tunnel_Out", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Misc/Widget Test/info.json b/datafiles/data/Nodes/Internal/Misc/Node_Widget_Test/info.json similarity index 75% rename from datafiles/data/Nodes/Internal/Misc/Widget Test/info.json rename to datafiles/data/Nodes/Internal/Misc/Node_Widget_Test/info.json index 42951ae17..6ad5545df 100644 --- a/datafiles/data/Nodes/Internal/Misc/Widget Test/info.json +++ b/datafiles/data/Nodes/Internal/Misc/Node_Widget_Test/info.json @@ -1,5 +1,5 @@ { - "tooltip":"", + "spr":"s_node_print", "baseNode":"Node_Widget_Test", "io":[ ], diff --git a/datafiles/data/Nodes/Internal/RigidSim/Input/info.json b/datafiles/data/Nodes/Internal/RigidSim/Node_Group_Input/info.json similarity index 66% rename from datafiles/data/Nodes/Internal/RigidSim/Input/info.json rename to datafiles/data/Nodes/Internal/RigidSim/Node_Group_Input/info.json index 07a748ffd..9be62189a 100644 --- a/datafiles/data/Nodes/Internal/RigidSim/Input/info.json +++ b/datafiles/data/Nodes/Internal/RigidSim/Node_Group_Input/info.json @@ -1,5 +1,5 @@ { - "tooltip":"", + "spr":"s_node_group_input", "baseNode":"Node_Group_Input", "io":[ "any", @@ -12,5 +12,6 @@ "any", "any" ], - "name":"Input" + "name":"Input", + "show_in_recent":false } \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Group/Output/info.json b/datafiles/data/Nodes/Internal/RigidSim/Node_Group_Output/info.json similarity index 66% rename from datafiles/data/Nodes/Internal/Group/Output/info.json rename to datafiles/data/Nodes/Internal/RigidSim/Node_Group_Output/info.json index bbbf3e81d..c84ac4769 100644 --- a/datafiles/data/Nodes/Internal/Group/Output/info.json +++ b/datafiles/data/Nodes/Internal/RigidSim/Node_Group_Output/info.json @@ -1,5 +1,5 @@ { - "tooltip":"", + "spr":"s_node_group_output", "baseNode":"Node_Group_Output", "io":[ "any", @@ -12,5 +12,6 @@ "any", "any" ], - "name":"Output" + "name":"Output", + "show_in_recent":false } \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/RigidSim/Activate Physics/info.json b/datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Activate/info.json similarity index 63% rename from datafiles/data/Nodes/Internal/RigidSim/Activate Physics/info.json rename to datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Activate/info.json index 4f340a61f..43b2b678b 100644 --- a/datafiles/data/Nodes/Internal/RigidSim/Activate Physics/info.json +++ b/datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Activate/info.json @@ -1,5 +1,8 @@ { "tooltip":"Enable or disable rigidbody object.", + "spr":"s_node_rigid_activate", + "pxc_version":1110.0, + "show_in_recent":false, "baseNode":"Node_Rigid_Activate", "io":[ "rigid" diff --git a/datafiles/data/Nodes/Internal/RigidSim/Apply Force/info.json b/datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Force_Apply/info.json similarity index 60% rename from datafiles/data/Nodes/Internal/RigidSim/Apply Force/info.json rename to datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Force_Apply/info.json index 645fbf93a..81edf8007 100644 --- a/datafiles/data/Nodes/Internal/RigidSim/Apply Force/info.json +++ b/datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Force_Apply/info.json @@ -1,5 +1,8 @@ { "tooltip":"Apply force to objects.", + "spr":"s_node_rigid_force_apply", + "pxc_version":1110.0, + "show_in_recent":false, "baseNode":"Node_Rigid_Force_Apply", "io":[ "rigid" diff --git a/datafiles/data/Nodes/Internal/RigidSim/RigidSim Global/info.json b/datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Global/info.json similarity index 52% rename from datafiles/data/Nodes/Internal/RigidSim/RigidSim Global/info.json rename to datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Global/info.json index ba0d855c9..a6a6b0b89 100644 --- a/datafiles/data/Nodes/Internal/RigidSim/RigidSim Global/info.json +++ b/datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Global/info.json @@ -1,5 +1,7 @@ { - "tooltip":"", + "spr":"s_node_rigid_global", + "pxc_version":1110.0, + "show_in_recent":false, "baseNode":"Node_Rigid_Global", "io":[ "rigid" diff --git a/datafiles/data/Nodes/Internal/RigidSim/Object/info.json b/datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Object/info.json similarity index 60% rename from datafiles/data/Nodes/Internal/RigidSim/Object/info.json rename to datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Object/info.json index 3d35640fc..80f8cda41 100644 --- a/datafiles/data/Nodes/Internal/RigidSim/Object/info.json +++ b/datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Object/info.json @@ -1,5 +1,8 @@ { "tooltip":"Spawn a rigidbody object.", + "spr":"s_node_rigid_object", + "pxc_version":1110.0, + "show_in_recent":false, "baseNode":"Node_Rigid_Object", "io":[ "rigid" diff --git a/datafiles/data/Nodes/Internal/RigidSim/Object Spawner/info.json b/datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Object_Spawner/info.json similarity index 62% rename from datafiles/data/Nodes/Internal/RigidSim/Object Spawner/info.json rename to datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Object_Spawner/info.json index 2959aa2de..ee1bbceac 100644 --- a/datafiles/data/Nodes/Internal/RigidSim/Object Spawner/info.json +++ b/datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Object_Spawner/info.json @@ -1,5 +1,8 @@ { "tooltip":"Spawn multiple rigidbody objects.", + "spr":"s_node_rigid_object_spawner", + "pxc_version":1110.0, + "show_in_recent":false, "baseNode":"Node_Rigid_Object_Spawner", "io":[ "rigid" diff --git a/datafiles/data/Nodes/Internal/RigidSim/Rigidbody Override/info.json b/datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Override/info.json similarity index 65% rename from datafiles/data/Nodes/Internal/RigidSim/Rigidbody Override/info.json rename to datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Override/info.json index f2b2c9682..3e3a8fd3e 100644 --- a/datafiles/data/Nodes/Internal/RigidSim/Rigidbody Override/info.json +++ b/datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Override/info.json @@ -1,5 +1,8 @@ { "tooltip":"Replace rigidbody object variable with a new one.", + "spr":"s_node_rigid_override", + "pxc_version":1120.0, + "show_in_recent":false, "baseNode":"Node_Rigid_Override", "io":[ "rigid" diff --git a/datafiles/data/Nodes/Internal/RigidSim/Render/info.json b/datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Render/info.json similarity index 61% rename from datafiles/data/Nodes/Internal/RigidSim/Render/info.json rename to datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Render/info.json index 226be5b0e..58c3b66d2 100644 --- a/datafiles/data/Nodes/Internal/RigidSim/Render/info.json +++ b/datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Render/info.json @@ -1,5 +1,8 @@ { "tooltip":"Render rigidbody object to surface.", + "spr":"s_node_rigid_render", + "pxc_version":1110.0, + "show_in_recent":false, "baseNode":"Node_Rigid_Render", "io":[ "rigid" diff --git a/datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Render_Output/info.json b/datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Render_Output/info.json new file mode 100644 index 000000000..fb113ad22 --- /dev/null +++ b/datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Render_Output/info.json @@ -0,0 +1,10 @@ +{ + "spr":"s_node_rigid_render_output", + "baseNode":"Node_Rigid_Render_Output", + "io":[ + "rigid", + "surface" + ], + "name":"Render", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/RigidSim/Rigidbody Variable/info.json b/datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Variable/info.json similarity index 64% rename from datafiles/data/Nodes/Internal/RigidSim/Rigidbody Variable/info.json rename to datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Variable/info.json index 95fcc6c36..6d90e0ddf 100644 --- a/datafiles/data/Nodes/Internal/RigidSim/Rigidbody Variable/info.json +++ b/datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Variable/info.json @@ -1,5 +1,8 @@ { "tooltip":"Extract veriable from rigidbody object.", + "spr":"s_node_rigid_variable", + "pxc_version":1120.0, + "show_in_recent":false, "baseNode":"Node_Rigid_Variable", "io":[ "rigid" diff --git a/datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Wall/info.json b/datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Wall/info.json new file mode 100644 index 000000000..168c4bded --- /dev/null +++ b/datafiles/data/Nodes/Internal/RigidSim/Node_Rigid_Wall/info.json @@ -0,0 +1,10 @@ +{ + "spr":"s_node_rigid_wall", + "pxc_version":11680.0, + "show_in_recent":false, + "baseNode":"Node_Rigid_Wall", + "io":[ + "rigid" + ], + "name":"Wall" +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/RigidSim/Wall/info.json b/datafiles/data/Nodes/Internal/RigidSim/Wall/info.json deleted file mode 100644 index 1896bd0fa..000000000 --- a/datafiles/data/Nodes/Internal/RigidSim/Wall/info.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_Rigid_Wall", - "io":[ - "rigid" - ], - "name":"Wall" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/SmokeSim/Input/info.json b/datafiles/data/Nodes/Internal/SmokeSim/Input/info.json deleted file mode 100644 index 07a748ffd..000000000 --- a/datafiles/data/Nodes/Internal/SmokeSim/Input/info.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_Group_Input", - "io":[ - "any", - "any", - "any", - "any", - "any", - "any", - "any", - "any", - "any" - ], - "name":"Input" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/SmokeSim/Node_Group_Input/info.json b/datafiles/data/Nodes/Internal/SmokeSim/Node_Group_Input/info.json new file mode 100644 index 000000000..9be62189a --- /dev/null +++ b/datafiles/data/Nodes/Internal/SmokeSim/Node_Group_Input/info.json @@ -0,0 +1,17 @@ +{ + "spr":"s_node_group_input", + "baseNode":"Node_Group_Input", + "io":[ + "any", + "any", + "any", + "any", + "any", + "any", + "any", + "any", + "any" + ], + "name":"Input", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/SmokeSim/Node_Group_Output/info.json b/datafiles/data/Nodes/Internal/SmokeSim/Node_Group_Output/info.json new file mode 100644 index 000000000..c84ac4769 --- /dev/null +++ b/datafiles/data/Nodes/Internal/SmokeSim/Node_Group_Output/info.json @@ -0,0 +1,17 @@ +{ + "spr":"s_node_group_output", + "baseNode":"Node_Group_Output", + "io":[ + "any", + "any", + "any", + "any", + "any", + "any", + "any", + "any", + "any" + ], + "name":"Output", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/SmokeSim/Add Emitter/info.json b/datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Add/info.json similarity index 60% rename from datafiles/data/Nodes/Internal/SmokeSim/Add Emitter/info.json rename to datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Add/info.json index e61077117..b2c31424c 100644 --- a/datafiles/data/Nodes/Internal/SmokeSim/Add Emitter/info.json +++ b/datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Add/info.json @@ -1,5 +1,8 @@ { "tooltip":"Add smoke emitter.", + "spr":"s_node_smoke_add", + "pxc_version":1120.0, + "show_in_recent":false, "baseNode":"Node_Smoke_Add", "io":[ "sdomain" diff --git a/datafiles/data/Nodes/Internal/SmokeSim/Add Collider/info.json b/datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Add_Collider/info.json similarity index 64% rename from datafiles/data/Nodes/Internal/SmokeSim/Add Collider/info.json rename to datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Add_Collider/info.json index 02fecc4a6..5582e00bc 100644 --- a/datafiles/data/Nodes/Internal/SmokeSim/Add Collider/info.json +++ b/datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Add_Collider/info.json @@ -1,5 +1,8 @@ { "tooltip":"Add solid object that smoke can collides to.", + "spr":"s_node_smoke_add_collider", + "pxc_version":1120.0, + "show_in_recent":false, "baseNode":"Node_Smoke_Add_Collider", "io":[ "sdomain" diff --git a/datafiles/data/Nodes/Internal/SmokeSim/Apply Velocity/info.json b/datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Apply_Velocity/info.json similarity index 60% rename from datafiles/data/Nodes/Internal/SmokeSim/Apply Velocity/info.json rename to datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Apply_Velocity/info.json index 51e4e4c51..8cefc2428 100644 --- a/datafiles/data/Nodes/Internal/SmokeSim/Apply Velocity/info.json +++ b/datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Apply_Velocity/info.json @@ -1,5 +1,8 @@ { "tooltip":"Apply velocity to smoke.", + "spr":"s_node_smoke_apply_velocity", + "pxc_version":1120.0, + "show_in_recent":false, "baseNode":"Node_Smoke_Apply_Velocity", "io":[ "sdomain" diff --git a/datafiles/data/Nodes/Internal/SmokeSim/Domain/info.json b/datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Domain/info.json similarity index 50% rename from datafiles/data/Nodes/Internal/SmokeSim/Domain/info.json rename to datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Domain/info.json index 6dde1464b..1a4997830 100644 --- a/datafiles/data/Nodes/Internal/SmokeSim/Domain/info.json +++ b/datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Domain/info.json @@ -1,5 +1,7 @@ { - "tooltip":"", + "spr":"s_node_smoke_domain", + "pxc_version":1120.0, + "show_in_recent":false, "baseNode":"Node_Smoke_Domain", "io":[ "sdomain" diff --git a/datafiles/data/Nodes/Internal/SmokeSim/Queue Domain/info.json b/datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Domain_Queue/info.json similarity index 65% rename from datafiles/data/Nodes/Internal/SmokeSim/Queue Domain/info.json rename to datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Domain_Queue/info.json index 2d6e4a787..5f1f6e8f7 100644 --- a/datafiles/data/Nodes/Internal/SmokeSim/Queue Domain/info.json +++ b/datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Domain_Queue/info.json @@ -1,5 +1,8 @@ { "tooltip":"Sync multiple domains to be render at the same time.", + "spr":"s_node_smoke_domain_queue", + "pxc_version":1120.0, + "show_in_recent":false, "baseNode":"Node_Smoke_Domain_Queue", "io":[ "sdomain" diff --git a/datafiles/data/Nodes/Internal/SmokeSim/Render Domain/info.json b/datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Render/info.json similarity index 68% rename from datafiles/data/Nodes/Internal/SmokeSim/Render Domain/info.json rename to datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Render/info.json index 40793ca8e..b9e3ba48c 100644 --- a/datafiles/data/Nodes/Internal/SmokeSim/Render Domain/info.json +++ b/datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Render/info.json @@ -1,5 +1,8 @@ { "tooltip":"Render smoke to surface. This node also have update function build in.", + "spr":"s_node_smoke_render", + "pxc_version":1120.0, + "show_in_recent":false, "baseNode":"Node_Smoke_Render", "io":[ "sdomain" diff --git a/datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Render_Output/info.json b/datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Render_Output/info.json new file mode 100644 index 000000000..fe46ae96d --- /dev/null +++ b/datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Render_Output/info.json @@ -0,0 +1,11 @@ +{ + "spr":"s_node_smoke_render_output", + "pxc_version":11540.0, + "show_in_recent":false, + "baseNode":"Node_Smoke_Render_Output", + "io":[ + "sdomain", + "surface" + ], + "name":"Render Domain" +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/SmokeSim/Repulse/info.json b/datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Repulse/info.json similarity index 61% rename from datafiles/data/Nodes/Internal/SmokeSim/Repulse/info.json rename to datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Repulse/info.json index 9bd50acb7..63c7f55ca 100644 --- a/datafiles/data/Nodes/Internal/SmokeSim/Repulse/info.json +++ b/datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Repulse/info.json @@ -1,5 +1,8 @@ { "tooltip":"Spread smoke away from a point.", + "spr":"s_node_smoke_repulse", + "pxc_version":1120.0, + "show_in_recent":false, "baseNode":"Node_Smoke_Repulse", "io":[ "sdomain" diff --git a/datafiles/data/Nodes/Internal/SmokeSim/Turbulence/info.json b/datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Turbulence/info.json similarity index 63% rename from datafiles/data/Nodes/Internal/SmokeSim/Turbulence/info.json rename to datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Turbulence/info.json index 7510bf2c0..c1ff97655 100644 --- a/datafiles/data/Nodes/Internal/SmokeSim/Turbulence/info.json +++ b/datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Turbulence/info.json @@ -1,5 +1,8 @@ { "tooltip":"Apply random velocity map to the smoke.", + "spr":"s_node_smoke_turbulence", + "pxc_version":1120.0, + "show_in_recent":false, "baseNode":"Node_Smoke_Turbulence", "io":[ "sdomain" diff --git a/datafiles/data/Nodes/Internal/SmokeSim/Update Domain/info.json b/datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Update/info.json similarity index 61% rename from datafiles/data/Nodes/Internal/SmokeSim/Update Domain/info.json rename to datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Update/info.json index dabf6eb52..0e40f6153 100644 --- a/datafiles/data/Nodes/Internal/SmokeSim/Update Domain/info.json +++ b/datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Update/info.json @@ -1,5 +1,8 @@ { "tooltip":"Run smoke by one step.", + "spr":"s_node_smoke_update", + "pxc_version":1120.0, + "show_in_recent":false, "baseNode":"Node_Smoke_Update", "io":[ "sdomain" diff --git a/datafiles/data/Nodes/Internal/SmokeSim/Vortex/info.json b/datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Vortex/info.json similarity index 62% rename from datafiles/data/Nodes/Internal/SmokeSim/Vortex/info.json rename to datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Vortex/info.json index 8776bbeb1..eebc506f5 100644 --- a/datafiles/data/Nodes/Internal/SmokeSim/Vortex/info.json +++ b/datafiles/data/Nodes/Internal/SmokeSim/Node_Smoke_Vortex/info.json @@ -1,5 +1,8 @@ { "tooltip":"Apply rotational force around a point.", + "spr":"s_node_smoke_vortex", + "pxc_version":1120.0, + "show_in_recent":false, "baseNode":"Node_Smoke_Vortex", "io":[ "sdomain" diff --git a/datafiles/data/Nodes/Internal/SmokeSim/Output/info.json b/datafiles/data/Nodes/Internal/SmokeSim/Output/info.json deleted file mode 100644 index bbbf3e81d..000000000 --- a/datafiles/data/Nodes/Internal/SmokeSim/Output/info.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_Group_Output", - "io":[ - "any", - "any", - "any", - "any", - "any", - "any", - "any", - "any", - "any" - ], - "name":"Output" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/StrandSim/Input/info.json b/datafiles/data/Nodes/Internal/StrandSim/Input/info.json deleted file mode 100644 index 07a748ffd..000000000 --- a/datafiles/data/Nodes/Internal/StrandSim/Input/info.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_Group_Input", - "io":[ - "any", - "any", - "any", - "any", - "any", - "any", - "any", - "any", - "any" - ], - "name":"Input" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/StrandSim/Node_Group_Input/info.json b/datafiles/data/Nodes/Internal/StrandSim/Node_Group_Input/info.json new file mode 100644 index 000000000..9be62189a --- /dev/null +++ b/datafiles/data/Nodes/Internal/StrandSim/Node_Group_Input/info.json @@ -0,0 +1,17 @@ +{ + "spr":"s_node_group_input", + "baseNode":"Node_Group_Input", + "io":[ + "any", + "any", + "any", + "any", + "any", + "any", + "any", + "any", + "any" + ], + "name":"Input", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/StrandSim/Node_Group_Output/info.json b/datafiles/data/Nodes/Internal/StrandSim/Node_Group_Output/info.json new file mode 100644 index 000000000..c84ac4769 --- /dev/null +++ b/datafiles/data/Nodes/Internal/StrandSim/Node_Group_Output/info.json @@ -0,0 +1,17 @@ +{ + "spr":"s_node_group_output", + "baseNode":"Node_Group_Output", + "io":[ + "any", + "any", + "any", + "any", + "any", + "any", + "any", + "any", + "any" + ], + "name":"Output", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/StrandSim/Strand Break/info.json b/datafiles/data/Nodes/Internal/StrandSim/Node_Strand_Break/info.json similarity index 62% rename from datafiles/data/Nodes/Internal/StrandSim/Strand Break/info.json rename to datafiles/data/Nodes/Internal/StrandSim/Node_Strand_Break/info.json index 7d862f6be..2a64e7aea 100644 --- a/datafiles/data/Nodes/Internal/StrandSim/Strand Break/info.json +++ b/datafiles/data/Nodes/Internal/StrandSim/Node_Strand_Break/info.json @@ -1,5 +1,8 @@ { "tooltip":"Detach strands from its origin.", + "spr":"s_node_strand_break", + "pxc_version":1140.0, + "show_in_recent":false, "baseNode":"Node_Strand_Break", "io":[ "strands" diff --git a/datafiles/data/Nodes/Internal/StrandSim/Strand Collision/info.json b/datafiles/data/Nodes/Internal/StrandSim/Node_Strand_Collision/info.json similarity index 65% rename from datafiles/data/Nodes/Internal/StrandSim/Strand Collision/info.json rename to datafiles/data/Nodes/Internal/StrandSim/Node_Strand_Collision/info.json index 3bb210979..1cca187bf 100644 --- a/datafiles/data/Nodes/Internal/StrandSim/Strand Collision/info.json +++ b/datafiles/data/Nodes/Internal/StrandSim/Node_Strand_Collision/info.json @@ -1,5 +1,8 @@ { "tooltip":"Create solid object for strands to collides to.", + "spr":"s_node_strand_collision", + "pxc_version":1140.0, + "show_in_recent":false, "baseNode":"Node_Strand_Collision", "io":[ "strands" diff --git a/datafiles/data/Nodes/Internal/StrandSim/Strand Create/info.json b/datafiles/data/Nodes/Internal/StrandSim/Node_Strand_Create/info.json similarity index 64% rename from datafiles/data/Nodes/Internal/StrandSim/Strand Create/info.json rename to datafiles/data/Nodes/Internal/StrandSim/Node_Strand_Create/info.json index 1b326540a..ad5f8f54f 100644 --- a/datafiles/data/Nodes/Internal/StrandSim/Strand Create/info.json +++ b/datafiles/data/Nodes/Internal/StrandSim/Node_Strand_Create/info.json @@ -1,5 +1,8 @@ { "tooltip":"Create strands from point, path, or mesh.", + "spr":"s_node_strand_create", + "pxc_version":1140.0, + "show_in_recent":false, "baseNode":"Node_Strand_Create", "io":[ "strands" diff --git a/datafiles/data/Nodes/Internal/StrandSim/Strand Force Apply/info.json b/datafiles/data/Nodes/Internal/StrandSim/Node_Strand_Force_Apply/info.json similarity index 62% rename from datafiles/data/Nodes/Internal/StrandSim/Strand Force Apply/info.json rename to datafiles/data/Nodes/Internal/StrandSim/Node_Strand_Force_Apply/info.json index 33c390d00..33b9a120a 100644 --- a/datafiles/data/Nodes/Internal/StrandSim/Strand Force Apply/info.json +++ b/datafiles/data/Nodes/Internal/StrandSim/Node_Strand_Force_Apply/info.json @@ -1,5 +1,8 @@ { "tooltip":"Apply general force to strands.", + "spr":"s_node_strand_force_apply", + "pxc_version":1140.0, + "show_in_recent":false, "baseNode":"Node_Strand_Force_Apply", "io":[ "strands" diff --git a/datafiles/data/Nodes/Internal/StrandSim/Strand Gravity/info.json b/datafiles/data/Nodes/Internal/StrandSim/Node_Strand_Gravity/info.json similarity index 64% rename from datafiles/data/Nodes/Internal/StrandSim/Strand Gravity/info.json rename to datafiles/data/Nodes/Internal/StrandSim/Node_Strand_Gravity/info.json index 017f59d76..11b84f7fd 100644 --- a/datafiles/data/Nodes/Internal/StrandSim/Strand Gravity/info.json +++ b/datafiles/data/Nodes/Internal/StrandSim/Node_Strand_Gravity/info.json @@ -1,5 +1,8 @@ { "tooltip":"Apply downward acceleration to strands.", + "spr":"s_node_strand_gravity", + "pxc_version":1140.0, + "show_in_recent":false, "baseNode":"Node_Strand_Gravity", "io":[ "strands" diff --git a/datafiles/data/Nodes/Internal/StrandSim/Strand Length Adjust/info.json b/datafiles/data/Nodes/Internal/StrandSim/Node_Strand_Length_Adjust/info.json similarity index 63% rename from datafiles/data/Nodes/Internal/StrandSim/Strand Length Adjust/info.json rename to datafiles/data/Nodes/Internal/StrandSim/Node_Strand_Length_Adjust/info.json index ba8a7e2e7..a125af5be 100644 --- a/datafiles/data/Nodes/Internal/StrandSim/Strand Length Adjust/info.json +++ b/datafiles/data/Nodes/Internal/StrandSim/Node_Strand_Length_Adjust/info.json @@ -1,5 +1,8 @@ { "tooltip":"Adjust length of strands in area.", + "spr":"s_node_strand_length_adjust", + "pxc_version":1140.0, + "show_in_recent":false, "baseNode":"Node_Strand_Length_Adjust", "io":[ "strands" diff --git a/datafiles/data/Nodes/Internal/StrandSim/Strand Render/info.json b/datafiles/data/Nodes/Internal/StrandSim/Node_Strand_Render/info.json similarity index 64% rename from datafiles/data/Nodes/Internal/StrandSim/Strand Render/info.json rename to datafiles/data/Nodes/Internal/StrandSim/Node_Strand_Render/info.json index 19501f2b0..9d108fdd8 100644 --- a/datafiles/data/Nodes/Internal/StrandSim/Strand Render/info.json +++ b/datafiles/data/Nodes/Internal/StrandSim/Node_Strand_Render/info.json @@ -1,5 +1,8 @@ { "tooltip":"Render strands to surface as a single path.", + "spr":"s_node_strand_render", + "pxc_version":1140.0, + "show_in_recent":false, "baseNode":"Node_Strand_Render", "io":[ "strands" diff --git a/datafiles/data/Nodes/Internal/StrandSim/Strand Render Texture/info.json b/datafiles/data/Nodes/Internal/StrandSim/Node_Strand_Render_Texture/info.json similarity index 65% rename from datafiles/data/Nodes/Internal/StrandSim/Strand Render Texture/info.json rename to datafiles/data/Nodes/Internal/StrandSim/Node_Strand_Render_Texture/info.json index ce7b05625..7d61f7c6d 100644 --- a/datafiles/data/Nodes/Internal/StrandSim/Strand Render Texture/info.json +++ b/datafiles/data/Nodes/Internal/StrandSim/Node_Strand_Render_Texture/info.json @@ -1,5 +1,8 @@ { "tooltip":"Render strands to surface as a textured path.", + "spr":"s_node_strand_render_texture", + "pxc_version":1140.0, + "show_in_recent":false, "baseNode":"Node_Strand_Render_Texture", "io":[ "strands" diff --git a/datafiles/data/Nodes/Internal/StrandSim/Strand Update/info.json b/datafiles/data/Nodes/Internal/StrandSim/Node_Strand_Update/info.json similarity index 62% rename from datafiles/data/Nodes/Internal/StrandSim/Strand Update/info.json rename to datafiles/data/Nodes/Internal/StrandSim/Node_Strand_Update/info.json index 06f82f7ca..1c384516e 100644 --- a/datafiles/data/Nodes/Internal/StrandSim/Strand Update/info.json +++ b/datafiles/data/Nodes/Internal/StrandSim/Node_Strand_Update/info.json @@ -1,5 +1,8 @@ { "tooltip":"Update strands by one step.", + "spr":"s_node_strand_update", + "pxc_version":1140.0, + "show_in_recent":false, "baseNode":"Node_Strand_Update", "io":[ "strands" diff --git a/datafiles/data/Nodes/Internal/StrandSim/Output/info.json b/datafiles/data/Nodes/Internal/StrandSim/Output/info.json deleted file mode 100644 index bbbf3e81d..000000000 --- a/datafiles/data/Nodes/Internal/StrandSim/Output/info.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_Group_Output", - "io":[ - "any", - "any", - "any", - "any", - "any", - "any", - "any", - "any", - "any" - ], - "name":"Output" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Transform/Nine Slice/info.json b/datafiles/data/Nodes/Internal/Transform/Node_9Slice/info.json similarity index 90% rename from datafiles/data/Nodes/Internal/Transform/Nine Slice/info.json rename to datafiles/data/Nodes/Internal/Transform/Node_9Slice/info.json index 55cdfb7f9..1856acf3b 100644 --- a/datafiles/data/Nodes/Internal/Transform/Nine Slice/info.json +++ b/datafiles/data/Nodes/Internal/Transform/Node_9Slice/info.json @@ -5,6 +5,7 @@ "splice", "nine patch" ], + "spr":"s_node_9slice", "baseNode":"Node_9Slice", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Transform/Bend/info.json b/datafiles/data/Nodes/Internal/Transform/Node_Bend/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Transform/Bend/info.json rename to datafiles/data/Nodes/Internal/Transform/Node_Bend/info.json index a4c8e5c73..8593a313e 100644 --- a/datafiles/data/Nodes/Internal/Transform/Bend/info.json +++ b/datafiles/data/Nodes/Internal/Transform/Node_Bend/info.json @@ -1,5 +1,7 @@ { "tooltip":"Warp an image into a predefined shape.", + "spr":"s_node_bend", + "pxc_version":11650.0, "baseNode":"Node_Bend", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Transform/Composite/info.json b/datafiles/data/Nodes/Internal/Transform/Node_Composite/info.json similarity index 87% rename from datafiles/data/Nodes/Internal/Transform/Composite/info.json rename to datafiles/data/Nodes/Internal/Transform/Node_Composite/info.json index 9b02dc178..f9696e9a3 100644 --- a/datafiles/data/Nodes/Internal/Transform/Composite/info.json +++ b/datafiles/data/Nodes/Internal/Transform/Node_Composite/info.json @@ -3,6 +3,7 @@ "alias":[ "merge" ], + "spr":"s_node_composite", "baseNode":"Node_Composite", "io":[ "surface", diff --git a/datafiles/data/Nodes/Internal/Transform/Crop/info.json b/datafiles/data/Nodes/Internal/Transform/Node_Crop/info.json similarity index 84% rename from datafiles/data/Nodes/Internal/Transform/Crop/info.json rename to datafiles/data/Nodes/Internal/Transform/Node_Crop/info.json index b4140c545..9a665bd0d 100644 --- a/datafiles/data/Nodes/Internal/Transform/Crop/info.json +++ b/datafiles/data/Nodes/Internal/Transform/Node_Crop/info.json @@ -1,5 +1,6 @@ { "tooltip":"Crop out image to create smaller ones.", + "spr":"s_node_crop", "baseNode":"Node_Crop", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Transform/Crop Content/info.json b/datafiles/data/Nodes/Internal/Transform/Node_Crop_Content/info.json similarity index 81% rename from datafiles/data/Nodes/Internal/Transform/Crop Content/info.json rename to datafiles/data/Nodes/Internal/Transform/Node_Crop_Content/info.json index f9a93f5a8..f71d17676 100644 --- a/datafiles/data/Nodes/Internal/Transform/Crop Content/info.json +++ b/datafiles/data/Nodes/Internal/Transform/Node_Crop_Content/info.json @@ -1,5 +1,6 @@ { "tooltip":"Crop out empty pixel from the image.", + "spr":"s_node_crop_content", "baseNode":"Node_Crop_Content", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Transform/Flip/info.json b/datafiles/data/Nodes/Internal/Transform/Node_Flip/info.json similarity index 87% rename from datafiles/data/Nodes/Internal/Transform/Flip/info.json rename to datafiles/data/Nodes/Internal/Transform/Node_Flip/info.json index ae394a2e6..07c109608 100644 --- a/datafiles/data/Nodes/Internal/Transform/Flip/info.json +++ b/datafiles/data/Nodes/Internal/Transform/Node_Flip/info.json @@ -3,6 +3,7 @@ "alias":[ "mirror" ], + "spr":"s_node_flip", "baseNode":"Node_Flip", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Transform/Mesh Warp/info.json b/datafiles/data/Nodes/Internal/Transform/Node_Mesh_Warp/info.json similarity index 85% rename from datafiles/data/Nodes/Internal/Transform/Mesh Warp/info.json rename to datafiles/data/Nodes/Internal/Transform/Node_Mesh_Warp/info.json index b634112b8..2a51e862b 100644 --- a/datafiles/data/Nodes/Internal/Transform/Mesh Warp/info.json +++ b/datafiles/data/Nodes/Internal/Transform/Node_Mesh_Warp/info.json @@ -1,5 +1,6 @@ { "tooltip":"Wrap image by converting it to mesh, and using control points.", + "spr":"s_node_mesh_warp", "baseNode":"Node_Mesh_Warp", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Transform/Mirror/info.json b/datafiles/data/Nodes/Internal/Transform/Node_Mirror/info.json similarity index 75% rename from datafiles/data/Nodes/Internal/Transform/Mirror/info.json rename to datafiles/data/Nodes/Internal/Transform/Node_Mirror/info.json index edba77794..42ab65282 100644 --- a/datafiles/data/Nodes/Internal/Transform/Mirror/info.json +++ b/datafiles/data/Nodes/Internal/Transform/Node_Mirror/info.json @@ -1,5 +1,7 @@ { "tooltip":"Reflect the image along a reflection line.", + "spr":"s_node_mirror", + "pxc_version":1070.0, "baseNode":"Node_Mirror", "io":[ "surface", diff --git a/datafiles/data/Nodes/Internal/Transform/Polar Mirror/info.json b/datafiles/data/Nodes/Internal/Transform/Node_Mirror_Polar/info.json similarity index 77% rename from datafiles/data/Nodes/Internal/Transform/Polar Mirror/info.json rename to datafiles/data/Nodes/Internal/Transform/Node_Mirror_Polar/info.json index eac084f57..a141a90b9 100644 --- a/datafiles/data/Nodes/Internal/Transform/Polar Mirror/info.json +++ b/datafiles/data/Nodes/Internal/Transform/Node_Mirror_Polar/info.json @@ -3,6 +3,8 @@ "alias":[ "kaleidoscope" ], + "spr":"s_node_mirror_polar", + "pxc_version":118062.0, "baseNode":"Node_Mirror_Polar", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Transform/Offset/info.json b/datafiles/data/Nodes/Internal/Transform/Node_Offset/info.json similarity index 85% rename from datafiles/data/Nodes/Internal/Transform/Offset/info.json rename to datafiles/data/Nodes/Internal/Transform/Node_Offset/info.json index 24c19bd0e..b3d2ba150 100644 --- a/datafiles/data/Nodes/Internal/Transform/Offset/info.json +++ b/datafiles/data/Nodes/Internal/Transform/Node_Offset/info.json @@ -3,6 +3,7 @@ "alias":[ "shift" ], + "spr":"s_node_offset", "baseNode":"Node_Offset", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Transform/Padding/info.json b/datafiles/data/Nodes/Internal/Transform/Node_Padding/info.json similarity index 84% rename from datafiles/data/Nodes/Internal/Transform/Padding/info.json rename to datafiles/data/Nodes/Internal/Transform/Node_Padding/info.json index 853eae8f6..a1d399838 100644 --- a/datafiles/data/Nodes/Internal/Transform/Padding/info.json +++ b/datafiles/data/Nodes/Internal/Transform/Node_Padding/info.json @@ -1,5 +1,6 @@ { "tooltip":"Make image bigger by adding space in 4 directions.", + "spr":"s_node_padding", "baseNode":"Node_Padding", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Transform/Polar/info.json b/datafiles/data/Nodes/Internal/Transform/Node_Polar/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Transform/Polar/info.json rename to datafiles/data/Nodes/Internal/Transform/Node_Polar/info.json index 9b589e89a..87d70e0ba 100644 --- a/datafiles/data/Nodes/Internal/Transform/Polar/info.json +++ b/datafiles/data/Nodes/Internal/Transform/Node_Polar/info.json @@ -1,5 +1,6 @@ { "tooltip":"Convert image to polar coordinate.", + "spr":"s_node_polar", "baseNode":"Node_Polar", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Transform/Scale/info.json b/datafiles/data/Nodes/Internal/Transform/Node_Scale/info.json similarity index 86% rename from datafiles/data/Nodes/Internal/Transform/Scale/info.json rename to datafiles/data/Nodes/Internal/Transform/Node_Scale/info.json index 559a307f5..51d681ce3 100644 --- a/datafiles/data/Nodes/Internal/Transform/Scale/info.json +++ b/datafiles/data/Nodes/Internal/Transform/Node_Scale/info.json @@ -3,6 +3,7 @@ "alias":[ "resize" ], + "spr":"s_node_scale", "baseNode":"Node_Scale", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Transform/Scale Algorithm/info.json b/datafiles/data/Nodes/Internal/Transform/Node_Scale_Algo/info.json similarity index 89% rename from datafiles/data/Nodes/Internal/Transform/Scale Algorithm/info.json rename to datafiles/data/Nodes/Internal/Transform/Node_Scale_Algo/info.json index a7478582c..05fdca330 100644 --- a/datafiles/data/Nodes/Internal/Transform/Scale Algorithm/info.json +++ b/datafiles/data/Nodes/Internal/Transform/Node_Scale_Algo/info.json @@ -5,6 +5,7 @@ "scale3x", "cleanedge" ], + "spr":"s_node_scale_algo", "baseNode":"Node_Scale_Algo", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Transform/Skew/info.json b/datafiles/data/Nodes/Internal/Transform/Node_Skew/info.json similarity index 87% rename from datafiles/data/Nodes/Internal/Transform/Skew/info.json rename to datafiles/data/Nodes/Internal/Transform/Node_Skew/info.json index 6e4c0629b..32f62d96b 100644 --- a/datafiles/data/Nodes/Internal/Transform/Skew/info.json +++ b/datafiles/data/Nodes/Internal/Transform/Node_Skew/info.json @@ -3,6 +3,7 @@ "alias":[ "shear" ], + "spr":"s_node_skew", "baseNode":"Node_Skew", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Transform/Tile Random/info.json b/datafiles/data/Nodes/Internal/Transform/Node_Tile_Random/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Transform/Tile Random/info.json rename to datafiles/data/Nodes/Internal/Transform/Node_Tile_Random/info.json index 519a4d615..1407f7962 100644 --- a/datafiles/data/Nodes/Internal/Transform/Tile Random/info.json +++ b/datafiles/data/Nodes/Internal/Transform/Node_Tile_Random/info.json @@ -1,5 +1,7 @@ { "tooltip":"Repeat images on a larger surface randomly.", + "spr":"s_node_tile_random", + "pxc_version":11780.0, "baseNode":"Node_Tile_Random", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Transform/Transform/info.json b/datafiles/data/Nodes/Internal/Transform/Node_Transform/info.json similarity index 86% rename from datafiles/data/Nodes/Internal/Transform/Transform/info.json rename to datafiles/data/Nodes/Internal/Transform/Node_Transform/info.json index 2a1ed105d..4d22ab62e 100644 --- a/datafiles/data/Nodes/Internal/Transform/Transform/info.json +++ b/datafiles/data/Nodes/Internal/Transform/Node_Transform/info.json @@ -5,6 +5,7 @@ "rotate", "scale" ], + "spr":"s_node_transform", "baseNode":"Node_Transform", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Transform/Warp/info.json b/datafiles/data/Nodes/Internal/Transform/Node_Warp/info.json similarity index 87% rename from datafiles/data/Nodes/Internal/Transform/Warp/info.json rename to datafiles/data/Nodes/Internal/Transform/Node_Warp/info.json index 262615d61..9b2759851 100644 --- a/datafiles/data/Nodes/Internal/Transform/Warp/info.json +++ b/datafiles/data/Nodes/Internal/Transform/Node_Warp/info.json @@ -3,6 +3,7 @@ "alias":[ "warp corner" ], + "spr":"s_node_warp", "baseNode":"Node_Warp", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Transform/Area Warp/info.json b/datafiles/data/Nodes/Internal/Transform/Node_Wrap_Area/info.json similarity index 82% rename from datafiles/data/Nodes/Internal/Transform/Area Warp/info.json rename to datafiles/data/Nodes/Internal/Transform/Node_Wrap_Area/info.json index 1f78481ef..124a5ede1 100644 --- a/datafiles/data/Nodes/Internal/Transform/Area Warp/info.json +++ b/datafiles/data/Nodes/Internal/Transform/Node_Wrap_Area/info.json @@ -1,5 +1,6 @@ { "tooltip":"Wrap image to fit an area value.", + "spr":"s_node_wrap_area", "baseNode":"Node_Wrap_Area", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/VFX/Input/info.json b/datafiles/data/Nodes/Internal/VFX/Input/info.json deleted file mode 100644 index 07a748ffd..000000000 --- a/datafiles/data/Nodes/Internal/VFX/Input/info.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_Group_Input", - "io":[ - "any", - "any", - "any", - "any", - "any", - "any", - "any", - "any", - "any" - ], - "name":"Input" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/VFX/Node_Group_Input/info.json b/datafiles/data/Nodes/Internal/VFX/Node_Group_Input/info.json new file mode 100644 index 000000000..9be62189a --- /dev/null +++ b/datafiles/data/Nodes/Internal/VFX/Node_Group_Input/info.json @@ -0,0 +1,17 @@ +{ + "spr":"s_node_group_input", + "baseNode":"Node_Group_Input", + "io":[ + "any", + "any", + "any", + "any", + "any", + "any", + "any", + "any", + "any" + ], + "name":"Input", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/VFX/Node_Group_Output/info.json b/datafiles/data/Nodes/Internal/VFX/Node_Group_Output/info.json new file mode 100644 index 000000000..c84ac4769 --- /dev/null +++ b/datafiles/data/Nodes/Internal/VFX/Node_Group_Output/info.json @@ -0,0 +1,17 @@ +{ + "spr":"s_node_group_output", + "baseNode":"Node_Group_Output", + "io":[ + "any", + "any", + "any", + "any", + "any", + "any", + "any", + "any", + "any" + ], + "name":"Output", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/VFX/Accelerate/info.json b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Accelerate/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/VFX/Accelerate/info.json rename to datafiles/data/Nodes/Internal/VFX/Node_VFX_Accelerate/info.json index cc83a3484..4ed3680aa 100644 --- a/datafiles/data/Nodes/Internal/VFX/Accelerate/info.json +++ b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Accelerate/info.json @@ -1,5 +1,7 @@ { "tooltip":"Change the speed of particle in range.", + "spr":"s_node_vfx_accelerate", + "show_in_recent":false, "baseNode":"Node_VFX_Accelerate", "io":[ "particle" diff --git a/datafiles/data/Nodes/Internal/VFX/Attract/info.json b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Attract/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/VFX/Attract/info.json rename to datafiles/data/Nodes/Internal/VFX/Node_VFX_Attract/info.json index 09bb127e9..23c390fcc 100644 --- a/datafiles/data/Nodes/Internal/VFX/Attract/info.json +++ b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Attract/info.json @@ -1,5 +1,7 @@ { "tooltip":"Attract particle in range to one point.", + "spr":"s_node_vfx_attract", + "show_in_recent":false, "baseNode":"Node_VFX_Attract", "io":[ "particle" diff --git a/datafiles/data/Nodes/Internal/VFX/Boids/info.json b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Boids/info.json similarity index 64% rename from datafiles/data/Nodes/Internal/VFX/Boids/info.json rename to datafiles/data/Nodes/Internal/VFX/Node_VFX_Boids/info.json index c0ca987b9..5b136471a 100644 --- a/datafiles/data/Nodes/Internal/VFX/Boids/info.json +++ b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Boids/info.json @@ -1,5 +1,8 @@ { "tooltip":"Apply boids algorithm to create a flock behaviour.", + "spr":"s_node_vfx_boids", + "pxc_version":118010.0, + "show_in_recent":false, "baseNode":"Node_VFX_Boids", "io":[ "particle" diff --git a/datafiles/data/Nodes/Internal/VFX/Destroy/info.json b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Destroy/info.json similarity index 69% rename from datafiles/data/Nodes/Internal/VFX/Destroy/info.json rename to datafiles/data/Nodes/Internal/VFX/Node_VFX_Destroy/info.json index 8d843bc51..bf231ea1e 100644 --- a/datafiles/data/Nodes/Internal/VFX/Destroy/info.json +++ b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Destroy/info.json @@ -1,5 +1,7 @@ { "tooltip":"Destroy particle in range.", + "spr":"s_node_vfx_destroy", + "show_in_recent":false, "baseNode":"Node_VFX_Destroy", "io":[ "particle" diff --git a/datafiles/data/Nodes/Internal/VFX/Oscillate/info.json b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Oscillate/info.json similarity index 64% rename from datafiles/data/Nodes/Internal/VFX/Oscillate/info.json rename to datafiles/data/Nodes/Internal/VFX/Node_VFX_Oscillate/info.json index 42afa4728..4633f7d23 100644 --- a/datafiles/data/Nodes/Internal/VFX/Oscillate/info.json +++ b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Oscillate/info.json @@ -1,5 +1,8 @@ { "tooltip":"Swing particle around its original trajectory.", + "spr":"s_node_vfx_oscillate", + "pxc_version":11560.0, + "show_in_recent":false, "baseNode":"Node_VFX_Oscillate", "io":[ "particle" diff --git a/datafiles/data/Nodes/Internal/VFX/VFX Override/info.json b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Override/info.json similarity index 64% rename from datafiles/data/Nodes/Internal/VFX/VFX Override/info.json rename to datafiles/data/Nodes/Internal/VFX/Node_VFX_Override/info.json index 15f7e50e0..a021460e5 100644 --- a/datafiles/data/Nodes/Internal/VFX/VFX Override/info.json +++ b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Override/info.json @@ -1,5 +1,8 @@ { "tooltip":"Replace particle variable with a new one.", + "spr":"s_node_vfx_override", + "pxc_version":1120.0, + "show_in_recent":false, "baseNode":"Node_VFX_Override", "io":[ "particle" diff --git a/datafiles/data/Nodes/Internal/VFX/Renderer/info.json b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Renderer/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/VFX/Renderer/info.json rename to datafiles/data/Nodes/Internal/VFX/Node_VFX_Renderer/info.json index 98635f0d6..68264286c 100644 --- a/datafiles/data/Nodes/Internal/VFX/Renderer/info.json +++ b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Renderer/info.json @@ -1,5 +1,7 @@ { "tooltip":"Render particle objects to surface.", + "spr":"s_node_vfx_render", + "show_in_recent":false, "baseNode":"Node_VFX_Renderer", "io":[ "particle" diff --git a/datafiles/data/Nodes/Internal/VFX/Node_VFX_Renderer_Output/info.json b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Renderer_Output/info.json new file mode 100644 index 000000000..2dc04f8de --- /dev/null +++ b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Renderer_Output/info.json @@ -0,0 +1,10 @@ +{ + "spr":"s_node_vfx_render_output", + "baseNode":"Node_VFX_Renderer_Output", + "io":[ + "surface", + "particle" + ], + "name":"Renderer", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/VFX/Repel/info.json b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Repel/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/VFX/Repel/info.json rename to datafiles/data/Nodes/Internal/VFX/Node_VFX_Repel/info.json index c1d78ac4f..a585089a0 100644 --- a/datafiles/data/Nodes/Internal/VFX/Repel/info.json +++ b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Repel/info.json @@ -1,5 +1,7 @@ { "tooltip":"Move particle away from point.", + "spr":"s_node_vfx_repel", + "show_in_recent":false, "baseNode":"Node_VFX_Repel", "io":[ "particle" diff --git a/datafiles/data/Nodes/Internal/VFX/Spawner/info.json b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Spawner/info.json similarity index 68% rename from datafiles/data/Nodes/Internal/VFX/Spawner/info.json rename to datafiles/data/Nodes/Internal/VFX/Node_VFX_Spawner/info.json index 245ad25f2..480d60e3d 100644 --- a/datafiles/data/Nodes/Internal/VFX/Spawner/info.json +++ b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Spawner/info.json @@ -1,5 +1,7 @@ { "tooltip":"Spawn new particles.", + "spr":"s_node_vfx_spawn", + "show_in_recent":false, "baseNode":"Node_VFX_Spawner", "io":[ "particle" diff --git a/datafiles/data/Nodes/Internal/VFX/VFX Trail/info.json b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Trail/info.json similarity index 63% rename from datafiles/data/Nodes/Internal/VFX/VFX Trail/info.json rename to datafiles/data/Nodes/Internal/VFX/Node_VFX_Trail/info.json index f2f1ffd6a..cc3773e15 100644 --- a/datafiles/data/Nodes/Internal/VFX/VFX Trail/info.json +++ b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Trail/info.json @@ -1,5 +1,8 @@ { "tooltip":"Generate path from particle movement.", + "spr":"s_node_vfx_trail", + "pxc_version":11560.0, + "show_in_recent":false, "baseNode":"Node_VFX_Trail", "io":[ "particle" diff --git a/datafiles/data/Nodes/Internal/VFX/VFX Triangulate/info.json b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Triangulate/info.json similarity index 62% rename from datafiles/data/Nodes/Internal/VFX/VFX Triangulate/info.json rename to datafiles/data/Nodes/Internal/VFX/Node_VFX_Triangulate/info.json index 4849e401b..667c1bca1 100644 --- a/datafiles/data/Nodes/Internal/VFX/VFX Triangulate/info.json +++ b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Triangulate/info.json @@ -1,5 +1,8 @@ { "tooltip":"Render line between particles.", + "spr":"s_node_vfx_triangulate", + "pxc_version":11670.0, + "show_in_recent":false, "baseNode":"Node_VFX_Triangulate", "io":[ "particle" diff --git a/datafiles/data/Nodes/Internal/VFX/Turbulence/info.json b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Turbulence/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/VFX/Turbulence/info.json rename to datafiles/data/Nodes/Internal/VFX/Node_VFX_Turbulence/info.json index 2b1d4f7d3..ed21a341a 100644 --- a/datafiles/data/Nodes/Internal/VFX/Turbulence/info.json +++ b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Turbulence/info.json @@ -1,5 +1,7 @@ { "tooltip":"Move particle in range randomly.", + "spr":"s_node_vfx_turbulence", + "show_in_recent":false, "baseNode":"Node_VFX_Turbulence", "io":[ "particle" diff --git a/datafiles/data/Nodes/Internal/VFX/VFX Variable/info.json b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Variable/info.json similarity index 64% rename from datafiles/data/Nodes/Internal/VFX/VFX Variable/info.json rename to datafiles/data/Nodes/Internal/VFX/Node_VFX_Variable/info.json index 8ffad62f8..fa9b7c58f 100644 --- a/datafiles/data/Nodes/Internal/VFX/VFX Variable/info.json +++ b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Variable/info.json @@ -1,5 +1,8 @@ { "tooltip":"Extract variable from particle objects.", + "spr":"s_node_vfx_variable", + "pxc_version":1120.0, + "show_in_recent":false, "baseNode":"Node_VFX_Variable", "io":[ "particle" diff --git a/datafiles/data/Nodes/Internal/VFX/Vortex/info.json b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Vortex/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/VFX/Vortex/info.json rename to datafiles/data/Nodes/Internal/VFX/Node_VFX_Vortex/info.json index dbb535194..41fbeb1c6 100644 --- a/datafiles/data/Nodes/Internal/VFX/Vortex/info.json +++ b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Vortex/info.json @@ -1,5 +1,7 @@ { "tooltip":"Rotate particle around a point.", + "spr":"s_node_vfx_vortex", + "show_in_recent":false, "baseNode":"Node_VFX_Vortex", "io":[ "particle" diff --git a/datafiles/data/Nodes/Internal/VFX/Wind/info.json b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Wind/info.json similarity index 68% rename from datafiles/data/Nodes/Internal/VFX/Wind/info.json rename to datafiles/data/Nodes/Internal/VFX/Node_VFX_Wind/info.json index 9bedfccc1..4a720d57a 100644 --- a/datafiles/data/Nodes/Internal/VFX/Wind/info.json +++ b/datafiles/data/Nodes/Internal/VFX/Node_VFX_Wind/info.json @@ -1,5 +1,7 @@ { "tooltip":"Move particle in range.", + "spr":"s_node_vfx_wind", + "show_in_recent":false, "baseNode":"Node_VFX_Wind", "io":[ "particle" diff --git a/datafiles/data/Nodes/Internal/VFX/Output/info.json b/datafiles/data/Nodes/Internal/VFX/Output/info.json deleted file mode 100644 index bbbf3e81d..000000000 --- a/datafiles/data/Nodes/Internal/VFX/Output/info.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "tooltip":"", - "baseNode":"Node_Group_Output", - "io":[ - "any", - "any", - "any", - "any", - "any", - "any", - "any", - "any", - "any" - ], - "name":"Output" -} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Values/Area/info.json b/datafiles/data/Nodes/Internal/Values/Node_Area/info.json similarity index 82% rename from datafiles/data/Nodes/Internal/Values/Area/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Area/info.json index 9b3a23518..c7abf44b7 100644 --- a/datafiles/data/Nodes/Internal/Values/Area/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Area/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate area data.", + "spr":"s_node_area", "baseNode":"Node_Area", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Values/Array/info.json b/datafiles/data/Nodes/Internal/Values/Node_Array/info.json similarity index 69% rename from datafiles/data/Nodes/Internal/Values/Array/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Array/info.json index 74524b18c..25817183a 100644 --- a/datafiles/data/Nodes/Internal/Values/Array/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Array/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create an array.", + "spr":"s_node_array", + "show_in_recent":false, "baseNode":"Node_Array", "io":[ "any", diff --git a/datafiles/data/Nodes/Internal/Values/Array Add/info.json b/datafiles/data/Nodes/Internal/Values/Node_Array_Add/info.json similarity index 81% rename from datafiles/data/Nodes/Internal/Values/Array Add/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Array_Add/info.json index c035c3953..95f21996e 100644 --- a/datafiles/data/Nodes/Internal/Values/Array Add/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Array_Add/info.json @@ -1,5 +1,6 @@ { "tooltip":"Add elements into an array.", + "spr":"s_node_array_add", "baseNode":"Node_Array_Add", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Values/Parse CSV/info.json b/datafiles/data/Nodes/Internal/Values/Node_Array_CSV_Parse/info.json similarity index 69% rename from datafiles/data/Nodes/Internal/Values/Parse CSV/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Array_CSV_Parse/info.json index 8e3212965..aa6746f82 100644 --- a/datafiles/data/Nodes/Internal/Values/Parse CSV/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Array_CSV_Parse/info.json @@ -1,5 +1,7 @@ { "tooltip":"Parse CSV string into array.", + "spr":"s_node_array_csv_parse", + "pxc_version":1145.0, "baseNode":"Node_Array_CSV_Parse", "io":[ "text" diff --git a/datafiles/data/Nodes/Internal/Values/Array Composite/info.json b/datafiles/data/Nodes/Internal/Values/Node_Array_Composite/info.json similarity index 76% rename from datafiles/data/Nodes/Internal/Values/Array Composite/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Array_Composite/info.json index 2e75375af..b078c30a8 100644 --- a/datafiles/data/Nodes/Internal/Values/Array Composite/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Array_Composite/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create 2D array by multiplying each member in the first 1D array with the second 1D array.", + "spr":"s_node_array_composite", + "pxc_version":11540.0, "baseNode":"Node_Array_Composite", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Values/Array Convolute/info.json b/datafiles/data/Nodes/Internal/Values/Node_Array_Convolute/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Values/Array Convolute/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Array_Convolute/info.json index ef39f33cd..9798d74c2 100644 --- a/datafiles/data/Nodes/Internal/Values/Array Convolute/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Array_Convolute/info.json @@ -1,5 +1,7 @@ { "tooltip":"Apply convolution between 2 number arrays.", + "spr":"s_node_array_convolute", + "pxc_version":11540.0, "baseNode":"Node_Array_Convolute", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Values/Array Copy/info.json b/datafiles/data/Nodes/Internal/Values/Node_Array_Copy/info.json similarity index 69% rename from datafiles/data/Nodes/Internal/Values/Array Copy/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Array_Copy/info.json index 3b5c36bbb..9d13e8441 100644 --- a/datafiles/data/Nodes/Internal/Values/Array Copy/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Array_Copy/info.json @@ -1,5 +1,7 @@ { "tooltip":"Copy array or subarray.", + "spr":"s_node_array_copy", + "pxc_version":1144.0, "baseNode":"Node_Array_Copy", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Values/Array Find/info.json b/datafiles/data/Nodes/Internal/Values/Node_Array_Find/info.json similarity index 74% rename from datafiles/data/Nodes/Internal/Values/Array Find/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Array_Find/info.json index 343831579..f60b453c9 100644 --- a/datafiles/data/Nodes/Internal/Values/Array Find/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Array_Find/info.json @@ -1,5 +1,7 @@ { "tooltip":"Returns index of an array member that match a condition.", + "spr":"s_node_array_find", + "pxc_version":1120.0, "baseNode":"Node_Array_Find", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Values/Array Get/info.json b/datafiles/data/Nodes/Internal/Values/Node_Array_Get/info.json similarity index 76% rename from datafiles/data/Nodes/Internal/Values/Array Get/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Array_Get/info.json index b486863c6..a4bd60759 100644 --- a/datafiles/data/Nodes/Internal/Values/Array Get/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Array_Get/info.json @@ -3,6 +3,8 @@ "alias":[ "get array" ], + "spr":"s_node_array_get", + "show_in_recent":false, "baseNode":"Node_Array_Get", "io":[ "any", diff --git a/datafiles/data/Nodes/Internal/Values/Array Insert/info.json b/datafiles/data/Nodes/Internal/Values/Node_Array_Insert/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/Values/Array Insert/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Array_Insert/info.json index 920dd532a..3eb188b11 100644 --- a/datafiles/data/Nodes/Internal/Values/Array Insert/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Array_Insert/info.json @@ -3,6 +3,9 @@ "alias":[ "insert array" ], + "spr":"s_node_array_insert", + "pxc_version":1120.0, + "show_in_recent":false, "baseNode":"Node_Array_Insert", "io":[ "any", diff --git a/datafiles/data/Nodes/Internal/Values/Array Length/info.json b/datafiles/data/Nodes/Internal/Values/Node_Array_Length/info.json similarity index 81% rename from datafiles/data/Nodes/Internal/Values/Array Length/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Array_Length/info.json index e6cf02a48..1669cad82 100644 --- a/datafiles/data/Nodes/Internal/Values/Array Length/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Array_Length/info.json @@ -1,5 +1,6 @@ { "tooltip":"Returns number of members in an array.", + "spr":"s_node_array_length", "baseNode":"Node_Array_Length", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Values/Array Range/info.json b/datafiles/data/Nodes/Internal/Values/Node_Array_Range/info.json similarity index 84% rename from datafiles/data/Nodes/Internal/Values/Array Range/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Array_Range/info.json index 239ad8c25..e66f0d6b8 100644 --- a/datafiles/data/Nodes/Internal/Values/Array Range/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Array_Range/info.json @@ -1,5 +1,6 @@ { "tooltip":"Create array of numbers by setting start, end and step length.", + "spr":"s_node_array_range", "baseNode":"Node_Array_Range", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Values/Array Rearrange/info.json b/datafiles/data/Nodes/Internal/Values/Node_Array_Rearrange/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/Values/Array Rearrange/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Array_Rearrange/info.json index 4d31db74c..2999bba2f 100644 --- a/datafiles/data/Nodes/Internal/Values/Array Rearrange/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Array_Rearrange/info.json @@ -1,5 +1,7 @@ { "tooltip":"Rearrange array member manually.", + "spr":"s_node_array_rearrange", + "pxc_version":11640.0, "baseNode":"Node_Array_Rearrange", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Values/Array Remove/info.json b/datafiles/data/Nodes/Internal/Values/Node_Array_Remove/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Values/Array Remove/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Array_Remove/info.json index a030ce085..b5fcf8727 100644 --- a/datafiles/data/Nodes/Internal/Values/Array Remove/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Array_Remove/info.json @@ -5,6 +5,9 @@ "delete array", "array delete" ], + "spr":"s_node_array_remove", + "pxc_version":1120.0, + "show_in_recent":false, "baseNode":"Node_Array_Remove", "io":[ "any", diff --git a/datafiles/data/Nodes/Internal/Values/Array Reverse/info.json b/datafiles/data/Nodes/Internal/Values/Node_Array_Reverse/info.json similarity index 68% rename from datafiles/data/Nodes/Internal/Values/Array Reverse/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Array_Reverse/info.json index 131a2ab55..ba8fc5bae 100644 --- a/datafiles/data/Nodes/Internal/Values/Array Reverse/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Array_Reverse/info.json @@ -1,5 +1,7 @@ { "tooltip":"Reverse array order", + "spr":"s_node_array_reverse", + "pxc_version":1120.0, "baseNode":"Node_Array_Reverse", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Values/Array Sample/info.json b/datafiles/data/Nodes/Internal/Values/Node_Array_Sample/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Values/Array Sample/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Array_Sample/info.json index c03b89cf6..091d82039 100644 --- a/datafiles/data/Nodes/Internal/Values/Array Sample/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Array_Sample/info.json @@ -1,5 +1,7 @@ { "tooltip":"Sample member from an array to create smaller one.", + "spr":"s_node_array_sample", + "pxc_version":11540.0, "baseNode":"Node_Array_Sample", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Values/Array Set/info.json b/datafiles/data/Nodes/Internal/Values/Node_Array_Set/info.json similarity index 68% rename from datafiles/data/Nodes/Internal/Values/Array Set/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Array_Set/info.json index 0199bea56..fa22f1943 100644 --- a/datafiles/data/Nodes/Internal/Values/Array Set/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Array_Set/info.json @@ -3,6 +3,9 @@ "alias":[ "set array" ], + "spr":"s_node_array_set", + "pxc_version":1120.0, + "show_in_recent":false, "baseNode":"Node_Array_Set", "io":[ "any", diff --git a/datafiles/data/Nodes/Internal/Values/Array Shift/info.json b/datafiles/data/Nodes/Internal/Values/Node_Array_Shift/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/Values/Array Shift/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Array_Shift/info.json index bc492afa4..caf98f6d4 100644 --- a/datafiles/data/Nodes/Internal/Values/Array Shift/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Array_Shift/info.json @@ -1,5 +1,7 @@ { "tooltip":"Shift all member in an array.", + "spr":"s_node_array_shift", + "pxc_version":1137.0, "baseNode":"Node_Array_Shift", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Values/Shuffle Array/info.json b/datafiles/data/Nodes/Internal/Values/Node_Array_Shuffle/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Values/Shuffle Array/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Array_Shuffle/info.json index 089a0462e..1ddca159b 100644 --- a/datafiles/data/Nodes/Internal/Values/Shuffle Array/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Array_Shuffle/info.json @@ -1,5 +1,7 @@ { "tooltip":"Randomly rearrange the array members.", + "spr":"s_node_array_shuffle", + "pxc_version":1120.0, "baseNode":"Node_Array_Shuffle", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Values/Sort Array/info.json b/datafiles/data/Nodes/Internal/Values/Node_Array_Sort/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Values/Sort Array/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Array_Sort/info.json index bf33678f4..ad4363a43 100644 --- a/datafiles/data/Nodes/Internal/Values/Sort Array/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Array_Sort/info.json @@ -1,5 +1,7 @@ { "tooltip":"Sort array using default comparison.", + "spr":"s_node_array_sort", + "pxc_version":1120.0, "baseNode":"Node_Array_Sort", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Values/Array Split/info.json b/datafiles/data/Nodes/Internal/Values/Node_Array_Split/info.json similarity index 82% rename from datafiles/data/Nodes/Internal/Values/Array Split/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Array_Split/info.json index e12f78b0e..4ace437aa 100644 --- a/datafiles/data/Nodes/Internal/Values/Array Split/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Array_Split/info.json @@ -1,5 +1,6 @@ { "tooltip":"Split array members into individual outputs.", + "spr":"s_node_array_split", "baseNode":"Node_Array_Split", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Values/Array Zip/info.json b/datafiles/data/Nodes/Internal/Values/Node_Array_Zip/info.json similarity index 78% rename from datafiles/data/Nodes/Internal/Values/Array Zip/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Array_Zip/info.json index de8f3e93d..0c3b0ba4d 100644 --- a/datafiles/data/Nodes/Internal/Values/Array Zip/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Array_Zip/info.json @@ -1,5 +1,7 @@ { "tooltip":"Combine multiple arrays into higher dimension array by grouping member of the same indicies.", + "spr":"s_node_array_zip", + "pxc_version":1138.0, "baseNode":"Node_Array_Zip", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Values/Draw Atlas/info.json b/datafiles/data/Nodes/Internal/Values/Node_Atlas_Draw/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Values/Draw Atlas/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Atlas_Draw/info.json index a0073f4d5..ef65e8df0 100644 --- a/datafiles/data/Nodes/Internal/Values/Draw Atlas/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Atlas_Draw/info.json @@ -1,5 +1,7 @@ { "tooltip":"Render image atlas to a surface.", + "spr":"s_node_atlas_draw", + "pxc_version":1141.0, "baseNode":"Node_Atlas_Draw", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Values/Atlas Get/info.json b/datafiles/data/Nodes/Internal/Values/Node_Atlas_Get/info.json similarity index 69% rename from datafiles/data/Nodes/Internal/Values/Atlas Get/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Atlas_Get/info.json index 12396e1ef..a6bd8da04 100644 --- a/datafiles/data/Nodes/Internal/Values/Atlas Get/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Atlas_Get/info.json @@ -1,5 +1,7 @@ { "tooltip":"Extract atlas data.", + "spr":"s_node_atlas_get", + "pxc_version":1141.0, "baseNode":"Node_Atlas_Get", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Values/Atlas Set/info.json b/datafiles/data/Nodes/Internal/Values/Node_Atlas_Set/info.json similarity index 69% rename from datafiles/data/Nodes/Internal/Values/Atlas Set/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Atlas_Set/info.json index 2dad2a5f2..bda15fd3c 100644 --- a/datafiles/data/Nodes/Internal/Values/Atlas Set/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Atlas_Set/info.json @@ -1,5 +1,7 @@ { "tooltip":"Modify atlas data.", + "spr":"s_node_atlas_set", + "pxc_version":1141.0, "baseNode":"Node_Atlas_Set", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Values/Atlas to Struct/info.json b/datafiles/data/Nodes/Internal/Values/Node_Atlas_Struct/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Values/Atlas to Struct/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Atlas_Struct/info.json index aff131df9..67b3bc510 100644 --- a/datafiles/data/Nodes/Internal/Values/Atlas to Struct/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Atlas_Struct/info.json @@ -1,5 +1,7 @@ { "tooltip":"Convert atlas into generic struct.", + "spr":"s_node_atlas_struct", + "pxc_version":11710.0, "baseNode":"Node_Atlas_Struct", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Values/Convert Base/info.json b/datafiles/data/Nodes/Internal/Values/Node_Base_Convert/info.json similarity index 77% rename from datafiles/data/Nodes/Internal/Values/Convert Base/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Base_Convert/info.json index 200d3c5a5..3b4db3048 100644 --- a/datafiles/data/Nodes/Internal/Values/Convert Base/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Base_Convert/info.json @@ -4,6 +4,8 @@ "binary", "hexadecimal" ], + "spr":"s_node_base_convert", + "pxc_version":1140.0, "baseNode":"Node_Base_Convert", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Values/Boolean/info.json b/datafiles/data/Nodes/Internal/Values/Node_Boolean/info.json similarity index 74% rename from datafiles/data/Nodes/Internal/Values/Boolean/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Boolean/info.json index 61ebc472b..3a8f180f0 100644 --- a/datafiles/data/Nodes/Internal/Values/Boolean/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Boolean/info.json @@ -1,5 +1,7 @@ { "tooltip":"Generate boolean (true, false) data.", + "spr":"s_node_boolean", + "pxc_version":1090.0, "baseNode":"Node_Boolean", "io":[ "boolean", diff --git a/datafiles/data/Nodes/Internal/Values/Compare/info.json b/datafiles/data/Nodes/Internal/Values/Node_Compare/info.json similarity index 91% rename from datafiles/data/Nodes/Internal/Values/Compare/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Compare/info.json index f1ad9edc7..e01582d7b 100644 --- a/datafiles/data/Nodes/Internal/Values/Compare/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Compare/info.json @@ -8,6 +8,7 @@ "lesser", "lesser equal" ], + "spr":"s_node_compare", "baseNode":"Node_Compare", "io":[ "boolean", diff --git a/datafiles/data/Nodes/Internal/Values/Equation/info.json b/datafiles/data/Nodes/Internal/Values/Node_Equation/info.json similarity index 87% rename from datafiles/data/Nodes/Internal/Values/Equation/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Equation/info.json index 91ebd3130..0d18d5efe 100644 --- a/datafiles/data/Nodes/Internal/Values/Equation/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Equation/info.json @@ -1,5 +1,6 @@ { "tooltip":"Evaluate string of equation. With an option for setting variables.", + "spr":"s_node_equation", "baseNode":"Node_Equation", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Animation/FFT/info.json b/datafiles/data/Nodes/Internal/Values/Node_FFT/info.json similarity index 81% rename from datafiles/data/Nodes/Internal/Animation/FFT/info.json rename to datafiles/data/Nodes/Internal/Values/Node_FFT/info.json index 7a08cc9fa..e7473b761 100644 --- a/datafiles/data/Nodes/Internal/Animation/FFT/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_FFT/info.json @@ -3,6 +3,8 @@ "alias":[ "frequency analysis" ], + "spr":"s_node_fft", + "pxc_version":1144.0, "baseNode":"Node_FFT", "io":[ "float", diff --git a/datafiles/data/Nodes/Internal/Values/IsoSurf/info.json b/datafiles/data/Nodes/Internal/Values/Node_IsoSurf/info.json similarity index 76% rename from datafiles/data/Nodes/Internal/Values/IsoSurf/info.json rename to datafiles/data/Nodes/Internal/Values/Node_IsoSurf/info.json index 346fbce4a..39276c5cb 100644 --- a/datafiles/data/Nodes/Internal/Values/IsoSurf/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_IsoSurf/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create a dynamic surface that changes its texture based on rotation.", + "spr":"s_node_isosurf", + "pxc_version":11520.0, "baseNode":"Node_IsoSurf", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Misc/Loop Array/info.json b/datafiles/data/Nodes/Internal/Values/Node_Iterate_Each_Inline/info.json similarity index 89% rename from datafiles/data/Nodes/Internal/Misc/Loop Array/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Iterate_Each_Inline/info.json index a3aea9d68..548897372 100644 --- a/datafiles/data/Nodes/Internal/Misc/Loop Array/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Iterate_Each_Inline/info.json @@ -5,6 +5,7 @@ "for each", "array loop" ], + "spr":"s_node_loop_array", "baseNode":"Node_Iterate_Each_Inline", "io":[ "any", diff --git a/datafiles/data/Nodes/Internal/Values/Filter Array/info.json b/datafiles/data/Nodes/Internal/Values/Node_Iterate_Filter_Inline/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/Values/Filter Array/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Iterate_Filter_Inline/info.json index 59c852f0d..fbd5a7e61 100644 --- a/datafiles/data/Nodes/Internal/Values/Filter Array/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Iterate_Filter_Inline/info.json @@ -1,5 +1,7 @@ { "tooltip":"Filter array using condition.", + "spr":"s_node_filter_array", + "pxc_version":1140.0, "baseNode":"Node_Iterate_Filter_Inline", "io":[ "any", diff --git a/datafiles/data/Nodes/Internal/Values/Sort Array Inline/info.json b/datafiles/data/Nodes/Internal/Values/Node_Iterate_Sort_Inline/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Values/Sort Array Inline/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Iterate_Sort_Inline/info.json index 0c8d3e231..b072d13f9 100644 --- a/datafiles/data/Nodes/Internal/Values/Sort Array Inline/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Iterate_Sort_Inline/info.json @@ -1,5 +1,7 @@ { "tooltip":"Sort array using node graph.", + "spr":"s_node_sort_array", + "pxc_version":1143.0, "baseNode":"Node_Iterate_Sort_Inline", "io":[ "any" diff --git a/datafiles/data/Nodes/Internal/Values/Logic Opr/info.json b/datafiles/data/Nodes/Internal/Values/Node_Logic/info.json similarity index 92% rename from datafiles/data/Nodes/Internal/Values/Logic Opr/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Logic/info.json index d1322a214..bce4205a7 100644 --- a/datafiles/data/Nodes/Internal/Values/Logic Opr/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Logic/info.json @@ -8,6 +8,7 @@ "nor", "xor" ], + "spr":"s_node_logic", "baseNode":"Node_Logic", "io":[ "boolean", diff --git a/datafiles/data/Nodes/Internal/Values/Math/info.json b/datafiles/data/Nodes/Internal/Values/Node_Math/info.json similarity index 95% rename from datafiles/data/Nodes/Internal/Values/Math/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Math/info.json index 7b80be3ba..5cf25deae 100644 --- a/datafiles/data/Nodes/Internal/Values/Math/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Math/info.json @@ -25,6 +25,7 @@ "clamp", "snap" ], + "spr":"s_node_math", "baseNode":"Node_Math", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Values/Path to Mesh/info.json b/datafiles/data/Nodes/Internal/Values/Node_Mesh_Create_Path/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/Values/Path to Mesh/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Mesh_Create_Path/info.json index b7003bb6f..ed71e929b 100644 --- a/datafiles/data/Nodes/Internal/Values/Path to Mesh/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Mesh_Create_Path/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create mesh from path.", + "spr":"s_node_mesh_create_path", + "pxc_version":1140.0, "baseNode":"Node_Mesh_Create_Path", "io":[ "pathnode", diff --git a/datafiles/data/Nodes/Internal/Values/Mesh Transform/info.json b/datafiles/data/Nodes/Internal/Values/Node_Mesh_Transform/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Values/Mesh Transform/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Mesh_Transform/info.json index 7a0f9a9f2..f6db338d8 100644 --- a/datafiles/data/Nodes/Internal/Values/Mesh Transform/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Mesh_Transform/info.json @@ -1,5 +1,7 @@ { "tooltip":"Transform (move, rotate, scale) mesh.", + "spr":"s_node_mesh_transform", + "pxc_version":1140.0, "baseNode":"Node_Mesh_Transform", "io":[ "mesh" diff --git a/datafiles/data/Nodes/Internal/Values/Translate Point/info.json b/datafiles/data/Nodes/Internal/Values/Node_Move_Point/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Values/Translate Point/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Move_Point/info.json index 28e837354..027805114 100644 --- a/datafiles/data/Nodes/Internal/Values/Translate Point/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Move_Point/info.json @@ -1,5 +1,7 @@ { "tooltip":"Translate array of points.", + "spr":"s_node_move_point", + "pxc_version":1141.0, "baseNode":"Node_Move_Point", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Values/Number/info.json b/datafiles/data/Nodes/Internal/Values/Node_Number/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Values/Number/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Number/info.json index 4fb1922c9..eb3085f13 100644 --- a/datafiles/data/Nodes/Internal/Values/Number/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Number/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate number data.", + "spr":"s_node_number", "baseNode":"Node_Number", "io":[ "float", diff --git a/datafiles/data/Nodes/Internal/Values/Path/info.json b/datafiles/data/Nodes/Internal/Values/Node_Path/info.json similarity index 86% rename from datafiles/data/Nodes/Internal/Values/Path/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Path/info.json index d358069de..a1ef9f003 100644 --- a/datafiles/data/Nodes/Internal/Values/Path/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Path/info.json @@ -1,5 +1,6 @@ { "tooltip":"Create path using bezier curve.", + "spr":"s_node_path", "baseNode":"Node_Path", "io":[ "float", diff --git a/datafiles/data/Nodes/Internal/Values/3D Path/info.json b/datafiles/data/Nodes/Internal/Values/Node_Path_3D/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/Values/3D Path/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Path_3D/info.json index b8589f4eb..d17bd2dc5 100644 --- a/datafiles/data/Nodes/Internal/Values/3D Path/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Path_3D/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create path in 3D space.", + "spr":"s_node_path_3d", + "pxc_version":11750.0, "baseNode":"Node_Path_3D", "io":[ "pathnode" diff --git a/datafiles/data/Nodes/Internal/Values/Path Anchor/info.json b/datafiles/data/Nodes/Internal/Values/Node_Path_Anchor/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Values/Path Anchor/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Path_Anchor/info.json index b608c7147..1d6656169 100644 --- a/datafiles/data/Nodes/Internal/Values/Path Anchor/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Path_Anchor/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create path anchor data.", + "spr":"s_node_path_anchor", + "pxc_version":1140.0, "baseNode":"Node_Path_Anchor", "io":[ "pathnode", diff --git a/datafiles/data/Nodes/Internal/Values/Path Combine/info.json b/datafiles/data/Nodes/Internal/Values/Node_Path_Array/info.json similarity index 76% rename from datafiles/data/Nodes/Internal/Values/Path Combine/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Path_Array/info.json index 55b1dc982..0cd6dad89 100644 --- a/datafiles/data/Nodes/Internal/Values/Path Combine/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Path_Array/info.json @@ -3,6 +3,8 @@ "alias":[ "array path" ], + "spr":"s_node_path_array", + "pxc_version":1137.0, "baseNode":"Node_Path_Array", "io":[ "pathnode" diff --git a/datafiles/data/Nodes/Internal/Values/Bake Path/info.json b/datafiles/data/Nodes/Internal/Values/Node_Path_Bake/info.json similarity index 74% rename from datafiles/data/Nodes/Internal/Values/Bake Path/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Path_Bake/info.json index 91a620783..d50fa4cfa 100644 --- a/datafiles/data/Nodes/Internal/Values/Bake Path/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Path_Bake/info.json @@ -1,5 +1,7 @@ { "tooltip":"Bake path data into array of vec2 points.", + "spr":"s_node_path_bake", + "pxc_version":11640.0, "baseNode":"Node_Path_Bake", "io":[ "pathnode", diff --git a/datafiles/data/Nodes/Internal/Values/Blend Path/info.json b/datafiles/data/Nodes/Internal/Values/Node_Path_Blend/info.json similarity index 81% rename from datafiles/data/Nodes/Internal/Values/Blend Path/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Path_Blend/info.json index 2c937d446..bdf427a0a 100644 --- a/datafiles/data/Nodes/Internal/Values/Blend Path/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Path_Blend/info.json @@ -1,5 +1,6 @@ { "tooltip":"Blend between 2 paths.", + "spr":"s_node_path_blend", "baseNode":"Node_Path_Blend", "io":[ "pathnode" diff --git a/datafiles/data/Nodes/Internal/Values/Bridge Path/info.json b/datafiles/data/Nodes/Internal/Values/Node_Path_Bridge/info.json similarity index 76% rename from datafiles/data/Nodes/Internal/Values/Bridge Path/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Path_Bridge/info.json index 019f3ebd7..45db4a20b 100644 --- a/datafiles/data/Nodes/Internal/Values/Bridge Path/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Path_Bridge/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create new paths that connect multiple paths at the same sample positions.", + "spr":"s_node_path_bridge", + "pxc_version":11640.0, "baseNode":"Node_Path_Bridge", "io":[ "pathnode" diff --git a/datafiles/data/Nodes/Internal/Values/Path Builder/info.json b/datafiles/data/Nodes/Internal/Values/Node_Path_Builder/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Values/Path Builder/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Path_Builder/info.json index 4c2be8e73..02446e068 100644 --- a/datafiles/data/Nodes/Internal/Values/Path Builder/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Path_Builder/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create path from array of vec2 points.", + "spr":"s_node_path_builder", + "pxc_version":1137.0, "baseNode":"Node_Path_Builder", "io":[ "pathnode" diff --git a/datafiles/data/Nodes/Internal/Values/Fill Path/info.json b/datafiles/data/Nodes/Internal/Values/Node_Path_Fill/info.json similarity index 68% rename from datafiles/data/Nodes/Internal/Values/Fill Path/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Path_Fill/info.json index 9ff604977..6ff5f5d23 100644 --- a/datafiles/data/Nodes/Internal/Values/Fill Path/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Path_Fill/info.json @@ -1,5 +1,7 @@ { "tooltip":"Fill area inside path.", + "spr":"s_node_path_fill", + "pxc_version":118062.0, "baseNode":"Node_Path_Fill", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Values/Path from Mask/info.json b/datafiles/data/Nodes/Internal/Values/Node_Path_From_Mask/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/Values/Path from Mask/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Path_From_Mask/info.json index 5db072ec8..c5a64d7b6 100644 --- a/datafiles/data/Nodes/Internal/Values/Path from Mask/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Path_From_Mask/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create path that wrap around a mask.", + "spr":"s_node_path_from_mask", + "pxc_version":11640.0, "baseNode":"Node_Path_From_Mask", "io":[ "pathnode", diff --git a/datafiles/data/Nodes/Internal/Values/L system/info.json b/datafiles/data/Nodes/Internal/Values/Node_Path_L_System/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Values/L system/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Path_L_System/info.json index 45992162d..0fba8ef88 100644 --- a/datafiles/data/Nodes/Internal/Values/L system/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Path_L_System/info.json @@ -1,5 +1,7 @@ { "tooltip":"Generate path using Lindenmayer system.", + "spr":"s_node_path_l_system", + "pxc_version":1137.0, "baseNode":"Node_Path_L_System", "io":[ "pathnode" diff --git a/datafiles/data/Nodes/Internal/Values/Map Path/info.json b/datafiles/data/Nodes/Internal/Values/Node_Path_Map/info.json similarity index 74% rename from datafiles/data/Nodes/Internal/Values/Map Path/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Path_Map/info.json index 550a0a481..6d61d1be8 100644 --- a/datafiles/data/Nodes/Internal/Values/Map Path/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Path_Map/info.json @@ -1,5 +1,7 @@ { "tooltip":"Map a texture between multiple paths.", + "spr":"s_node_path_map", + "pxc_version":11640.0, "baseNode":"Node_Path_Map", "io":[ "pathnode", diff --git a/datafiles/data/Nodes/Internal/Values/Remap Path/info.json b/datafiles/data/Nodes/Internal/Values/Node_Path_Map_Area/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/Values/Remap Path/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Path_Map_Area/info.json index c04d8523d..757288bf3 100644 --- a/datafiles/data/Nodes/Internal/Values/Remap Path/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Path_Map_Area/info.json @@ -1,5 +1,7 @@ { "tooltip":"Scale path to fit a given area.", + "spr":"s_node_path_map_area", + "pxc_version":1130.0, "baseNode":"Node_Path_Map_Area", "io":[ "pathnode" diff --git a/datafiles/data/Nodes/Internal/Values/Morph Path/info.json b/datafiles/data/Nodes/Internal/Values/Node_Path_Morph/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/Values/Morph Path/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Path_Morph/info.json index 9cdf2e9fb..1e7e6cc71 100644 --- a/datafiles/data/Nodes/Internal/Values/Morph Path/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Path_Morph/info.json @@ -1,5 +1,7 @@ { "tooltip":"Draw gradient connecting 2 paths.", + "spr":"s_node_path_morph", + "pxc_version":118062.0, "baseNode":"Node_Path_Morph", "io":[ "pathnode", diff --git a/datafiles/data/Nodes/Internal/Values/Plot Path/info.json b/datafiles/data/Nodes/Internal/Values/Node_Path_Plot/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Values/Plot Path/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Path_Plot/info.json index 1e7cf301d..94b773f79 100644 --- a/datafiles/data/Nodes/Internal/Values/Plot Path/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Path_Plot/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create path from parametric equations.", + "spr":"s_node_path_plot", + "pxc_version":1138.0, "baseNode":"Node_Path_Plot", "io":[ "pathnode" diff --git a/datafiles/data/Nodes/Internal/Values/Repeat Path/info.json b/datafiles/data/Nodes/Internal/Values/Node_Path_Repeat/info.json similarity index 67% rename from datafiles/data/Nodes/Internal/Values/Repeat Path/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Path_Repeat/info.json index 7e3526871..4ed54729e 100644 --- a/datafiles/data/Nodes/Internal/Values/Repeat Path/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Path_Repeat/info.json @@ -1,5 +1,7 @@ { "tooltip":"Repeat paths.", + "spr":"s_node_path_repeat", + "pxc_version":118056.0, "baseNode":"Node_Path_Repeat", "io":[ "pathnode" diff --git a/datafiles/data/Nodes/Internal/Values/Reverse Path/info.json b/datafiles/data/Nodes/Internal/Values/Node_Path_Reverse/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/Values/Reverse Path/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Path_Reverse/info.json index 0b0ef51e3..e2541d6d7 100644 --- a/datafiles/data/Nodes/Internal/Values/Reverse Path/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Path_Reverse/info.json @@ -1,5 +1,7 @@ { "tooltip":"Reverse path direction.", + "spr":"s_node_path_reverse", + "pxc_version":1130.0, "baseNode":"Node_Path_Reverse", "io":[ "pathnode" diff --git a/datafiles/data/Nodes/Internal/Values/Sample Path/info.json b/datafiles/data/Nodes/Internal/Values/Node_Path_Sample/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Values/Sample Path/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Path_Sample/info.json index 1922a3d63..62b525e24 100644 --- a/datafiles/data/Nodes/Internal/Values/Sample Path/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Path_Sample/info.json @@ -1,5 +1,6 @@ { "tooltip":"Sample a 2D position from a path", + "spr":"s_node_path_sample", "baseNode":"Node_Path_Sample", "io":[ "pathnode", diff --git a/datafiles/data/Nodes/Internal/Values/Scatter Path/info.json b/datafiles/data/Nodes/Internal/Values/Node_Path_Scatter/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Values/Scatter Path/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Path_Scatter/info.json index 6103658e6..48bef937d 100644 --- a/datafiles/data/Nodes/Internal/Values/Scatter Path/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Path_Scatter/info.json @@ -1,5 +1,7 @@ { "tooltip":"Scatter paths along another path.", + "spr":"s_node_path_scatter", + "pxc_version":11740.0, "baseNode":"Node_Path_Scatter", "io":[ "pathnode" diff --git a/datafiles/data/Nodes/Internal/Values/Separate File Path/info.json b/datafiles/data/Nodes/Internal/Values/Node_Path_Separate_Folder/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/Values/Separate File Path/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Path_Separate_Folder/info.json index b5474f37e..e80c6dac5 100644 --- a/datafiles/data/Nodes/Internal/Values/Separate File Path/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Path_Separate_Folder/info.json @@ -1,5 +1,7 @@ { "tooltip":"Separate path string into a pair of directory and filename.", + "spr":"s_node_path_separate_folder", + "pxc_version":1145.0, "baseNode":"Node_Path_Separate_Folder", "io":[ "text" diff --git a/datafiles/data/Nodes/Internal/Values/Shape Path/info.json b/datafiles/data/Nodes/Internal/Values/Node_Path_Shape/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Values/Shape Path/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Path_Shape/info.json index ff1b70d36..15975fca8 100644 --- a/datafiles/data/Nodes/Internal/Values/Shape Path/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Path_Shape/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create path with predefined shape.", + "spr":"s_node_path_shape", + "pxc_version":118056.0, "baseNode":"Node_Path_Shape", "io":[ "pathnode" diff --git a/datafiles/data/Nodes/Internal/Values/Shift Path/info.json b/datafiles/data/Nodes/Internal/Values/Node_Path_Shift/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/Values/Shift Path/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Path_Shift/info.json index d1c37232b..e6b061e1a 100644 --- a/datafiles/data/Nodes/Internal/Values/Shift Path/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Path_Shift/info.json @@ -1,5 +1,7 @@ { "tooltip":"Move path along its normal.", + "spr":"s_node_path_shift", + "pxc_version":1130.0, "baseNode":"Node_Path_Shift", "io":[ "pathnode" diff --git a/datafiles/data/Nodes/Internal/Values/Smooth Path/info.json b/datafiles/data/Nodes/Internal/Values/Node_Path_Smooth/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Values/Smooth Path/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Path_Smooth/info.json index 6ca985159..4cd37231b 100644 --- a/datafiles/data/Nodes/Internal/Values/Smooth Path/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Path_Smooth/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create path with automatic smoothness.", + "spr":"s_node_path_smooth", + "pxc_version":11640.0, "baseNode":"Node_Path_Smooth", "io":[ "pathnode" diff --git a/datafiles/data/Nodes/Internal/Values/Transform Path/info.json b/datafiles/data/Nodes/Internal/Values/Node_Path_Transform/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/Values/Transform Path/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Path_Transform/info.json index 5ad88d4f6..07a625bab 100644 --- a/datafiles/data/Nodes/Internal/Values/Transform Path/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Path_Transform/info.json @@ -1,5 +1,7 @@ { "tooltip":"Move rotate and scale a path.", + "spr":"s_node_path_transform", + "pxc_version":1130.0, "baseNode":"Node_Path_Transform", "io":[ "pathnode" diff --git a/datafiles/data/Nodes/Internal/Values/Trim Path/info.json b/datafiles/data/Nodes/Internal/Values/Node_Path_Trim/info.json similarity index 67% rename from datafiles/data/Nodes/Internal/Values/Trim Path/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Path_Trim/info.json index 0a94fc956..1f0dc7e12 100644 --- a/datafiles/data/Nodes/Internal/Values/Trim Path/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Path_Trim/info.json @@ -1,5 +1,7 @@ { "tooltip":"Trim path.", + "spr":"s_node_path_trim", + "pxc_version":1130.0, "baseNode":"Node_Path_Trim", "io":[ "pathnode" diff --git a/datafiles/data/Nodes/Internal/Values/Wave Path/info.json b/datafiles/data/Nodes/Internal/Values/Node_Path_Wave/info.json similarity index 76% rename from datafiles/data/Nodes/Internal/Values/Wave Path/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Path_Wave/info.json index 17b353b99..a3be4dad1 100644 --- a/datafiles/data/Nodes/Internal/Values/Wave Path/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Path_Wave/info.json @@ -3,6 +3,8 @@ "alias":[ "zigzag path" ], + "spr":"s_node_path_wave", + "pxc_version":1130.0, "baseNode":"Node_Path_Wave", "io":[ "pathnode" diff --git a/datafiles/data/Nodes/Internal/Values/Point in Area/info.json b/datafiles/data/Nodes/Internal/Values/Node_Point_In_Area/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Values/Point in Area/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Point_In_Area/info.json index 7a06cbb70..af0e532d6 100644 --- a/datafiles/data/Nodes/Internal/Values/Point in Area/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Point_In_Area/info.json @@ -1,5 +1,7 @@ { "tooltip":"Check whether a point lies in an area.", + "spr":"s_node_point_in_area", + "pxc_version":117100.0, "baseNode":"Node_Point_In_Area", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Values/Random/info.json b/datafiles/data/Nodes/Internal/Values/Node_Random/info.json similarity index 84% rename from datafiles/data/Nodes/Internal/Values/Random/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Random/info.json index 4b083530e..2a07a907f 100644 --- a/datafiles/data/Nodes/Internal/Values/Random/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Random/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate pseudo-random value based on seed.", + "spr":"s_node_random", "baseNode":"Node_Random", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Values/Scatter Points/info.json b/datafiles/data/Nodes/Internal/Values/Node_Scatter_Points/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Values/Scatter Points/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Scatter_Points/info.json index edb169393..3c7a2274c 100644 --- a/datafiles/data/Nodes/Internal/Values/Scatter Points/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Scatter_Points/info.json @@ -1,5 +1,7 @@ { "tooltip":"Generate array of vector 2 points.", + "spr":"s_node_scatter_points", + "pxc_version":1120.0, "baseNode":"Node_Scatter_Points", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Values/Filter Segments/info.json b/datafiles/data/Nodes/Internal/Values/Node_Segment_Filter/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/Values/Filter Segments/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Segment_Filter/info.json index 4e653388b..50dd033ba 100644 --- a/datafiles/data/Nodes/Internal/Values/Filter Segments/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Segment_Filter/info.json @@ -1,5 +1,7 @@ { "tooltip":"Filter segment (vec2 array) based on a conditions.", + "spr":"s_node_segment_filter", + "pxc_version":11780.0, "baseNode":"Node_Segment_Filter", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Values/Statistic/info.json b/datafiles/data/Nodes/Internal/Values/Node_Statistic/info.json similarity index 91% rename from datafiles/data/Nodes/Internal/Values/Statistic/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Statistic/info.json index 25b97ba44..fa8815dfd 100644 --- a/datafiles/data/Nodes/Internal/Values/Statistic/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Statistic/info.json @@ -8,6 +8,7 @@ "min", "average" ], + "spr":"s_node_statistic", "baseNode":"Node_Statistic", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Values/Text/info.json b/datafiles/data/Nodes/Internal/Values/Node_String/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Values/Text/info.json rename to datafiles/data/Nodes/Internal/Values/Node_String/info.json index 8e1fcf365..69f14b81a 100644 --- a/datafiles/data/Nodes/Internal/Values/Text/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_String/info.json @@ -1,5 +1,6 @@ { "tooltip":"Generate text\/string data.", + "spr":"s_node_string", "baseNode":"Node_String", "io":[ "text", diff --git a/datafiles/data/Nodes/Internal/Values/Get Character/info.json b/datafiles/data/Nodes/Internal/Values/Node_String_Get_Char/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/Values/Get Character/info.json rename to datafiles/data/Nodes/Internal/Values/Node_String_Get_Char/info.json index 1451d694d..ef2a07a7d 100644 --- a/datafiles/data/Nodes/Internal/Values/Get Character/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_String_Get_Char/info.json @@ -1,5 +1,7 @@ { "tooltip":"Get a nth character in a string.", + "spr":"s_node_string_get_char", + "pxc_version":1100.0, "baseNode":"Node_String_Get_Char", "io":[ "text" diff --git a/datafiles/data/Nodes/Internal/Values/Join Text Array/info.json b/datafiles/data/Nodes/Internal/Values/Node_String_Join/info.json similarity index 76% rename from datafiles/data/Nodes/Internal/Values/Join Text Array/info.json rename to datafiles/data/Nodes/Internal/Values/Node_String_Join/info.json index 3f898c0c7..482add3a1 100644 --- a/datafiles/data/Nodes/Internal/Values/Join Text Array/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_String_Join/info.json @@ -1,5 +1,7 @@ { "tooltip":"Combine string array with an option to add extra string in-between.", + "spr":"s_node_string_join", + "pxc_version":1120.0, "baseNode":"Node_String_Join", "io":[ "text" diff --git a/datafiles/data/Nodes/Internal/Values/Text Length/info.json b/datafiles/data/Nodes/Internal/Values/Node_String_Length/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/Values/Text Length/info.json rename to datafiles/data/Nodes/Internal/Values/Node_String_Length/info.json index 38eb07881..5c22c4c55 100644 --- a/datafiles/data/Nodes/Internal/Values/Text Length/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_String_Length/info.json @@ -1,5 +1,7 @@ { "tooltip":"Return number of character in a string.", + "spr":"s_node_string_length", + "pxc_version":1138.0, "baseNode":"Node_String_Length", "io":[ "text", diff --git a/datafiles/data/Nodes/Internal/Values/Combine Texts/info.json b/datafiles/data/Nodes/Internal/Values/Node_String_Merge/info.json similarity index 86% rename from datafiles/data/Nodes/Internal/Values/Combine Texts/info.json rename to datafiles/data/Nodes/Internal/Values/Node_String_Merge/info.json index 803d7f189..318edc1c3 100644 --- a/datafiles/data/Nodes/Internal/Values/Combine Texts/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_String_Merge/info.json @@ -4,6 +4,7 @@ "join text", "concatenate text" ], + "spr":"s_node_string_merge", "baseNode":"Node_String_Merge", "io":[ "text" diff --git a/datafiles/data/Nodes/Internal/Values/RegEx Match/info.json b/datafiles/data/Nodes/Internal/Values/Node_String_Regex_Match/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/Values/RegEx Match/info.json rename to datafiles/data/Nodes/Internal/Values/Node_String_Regex_Match/info.json index 3b1f2347a..a3776584a 100644 --- a/datafiles/data/Nodes/Internal/Values/RegEx Match/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_String_Regex_Match/info.json @@ -1,5 +1,7 @@ { "tooltip":"Check whether regular expression pattern exist in a string.", + "spr":"s_node_string_regex_match", + "pxc_version":1140.0, "baseNode":"Node_String_Regex_Match", "io":[ "text" diff --git a/datafiles/data/Nodes/Internal/Values/RegEx Replace/info.json b/datafiles/data/Nodes/Internal/Values/Node_String_Regex_Replace/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/Values/RegEx Replace/info.json rename to datafiles/data/Nodes/Internal/Values/Node_String_Regex_Replace/info.json index e230ddc96..77a6372a3 100644 --- a/datafiles/data/Nodes/Internal/Values/RegEx Replace/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_String_Regex_Replace/info.json @@ -1,5 +1,7 @@ { "tooltip":"Replace instances of a string with another using regular expression.", + "spr":"s_node_string_regex_replace", + "pxc_version":1140.0, "baseNode":"Node_String_Regex_Replace", "io":[ "text" diff --git a/datafiles/data/Nodes/Internal/Values/RegEx Search/info.json b/datafiles/data/Nodes/Internal/Values/Node_String_Regex_Search/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Values/RegEx Search/info.json rename to datafiles/data/Nodes/Internal/Values/Node_String_Regex_Search/info.json index 3effca47c..a82110a3a 100644 --- a/datafiles/data/Nodes/Internal/Values/RegEx Search/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_String_Regex_Search/info.json @@ -1,5 +1,7 @@ { "tooltip":"Search for instances in a string using regular expression.", + "spr":"s_node_string_regex_search", + "pxc_version":1140.0, "baseNode":"Node_String_Regex_Search", "io":[ "text" diff --git a/datafiles/data/Nodes/Internal/Values/Split Text/info.json b/datafiles/data/Nodes/Internal/Values/Node_String_Split/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Values/Split Text/info.json rename to datafiles/data/Nodes/Internal/Values/Node_String_Split/info.json index 027415e9f..a80f0596e 100644 --- a/datafiles/data/Nodes/Internal/Values/Split Text/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_String_Split/info.json @@ -1,5 +1,6 @@ { "tooltip":"Split string into arrays of substring based on delimiter.", + "spr":"s_node_string_split", "baseNode":"Node_String_Split", "io":[ "text" diff --git a/datafiles/data/Nodes/Internal/Values/Trim Text/info.json b/datafiles/data/Nodes/Internal/Values/Node_String_Trim/info.json similarity index 73% rename from datafiles/data/Nodes/Internal/Values/Trim Text/info.json rename to datafiles/data/Nodes/Internal/Values/Node_String_Trim/info.json index 89bef51db..9bc159551 100644 --- a/datafiles/data/Nodes/Internal/Values/Trim Text/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_String_Trim/info.json @@ -1,5 +1,7 @@ { "tooltip":"Remove first and last n character(s) from a string.", + "spr":"s_node_string_trim", + "pxc_version":1080.0, "baseNode":"Node_String_Trim", "io":[ "text" diff --git a/datafiles/data/Nodes/Internal/Values/Struct/info.json b/datafiles/data/Nodes/Internal/Values/Node_Struct/info.json similarity index 82% rename from datafiles/data/Nodes/Internal/Values/Struct/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Struct/info.json index 1d248fa24..a0d86c2d2 100644 --- a/datafiles/data/Nodes/Internal/Values/Struct/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Struct/info.json @@ -1,5 +1,6 @@ { "tooltip":"Create key-value pair struct.", + "spr":"s_node_struct", "baseNode":"Node_Struct", "io":[ "struct" diff --git a/datafiles/data/Nodes/Internal/Values/Struct Get/info.json b/datafiles/data/Nodes/Internal/Values/Node_Struct_Get/info.json similarity index 81% rename from datafiles/data/Nodes/Internal/Values/Struct Get/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Struct_Get/info.json index c23ab1553..da1dbc651 100644 --- a/datafiles/data/Nodes/Internal/Values/Struct Get/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Struct_Get/info.json @@ -1,5 +1,6 @@ { "tooltip":"Get value from struct and key.", + "spr":"s_node_struct_get", "baseNode":"Node_Struct_Get", "io":[ "struct" diff --git a/datafiles/data/Nodes/Internal/Values/Parse JSON/info.json b/datafiles/data/Nodes/Internal/Values/Node_Struct_JSON_Parse/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Values/Parse JSON/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Struct_JSON_Parse/info.json index 27e3c2e45..e4fd1fba0 100644 --- a/datafiles/data/Nodes/Internal/Values/Parse JSON/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Struct_JSON_Parse/info.json @@ -1,5 +1,7 @@ { "tooltip":"Parse json string into struct\/array.", + "spr":"s_node_struct_json_parse", + "pxc_version":1145.0, "baseNode":"Node_Struct_JSON_Parse", "io":[ "struct", diff --git a/datafiles/data/Nodes/Internal/Values/Struct Set/info.json b/datafiles/data/Nodes/Internal/Values/Node_Struct_Set/info.json similarity index 79% rename from datafiles/data/Nodes/Internal/Values/Struct Set/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Struct_Set/info.json index 8dc944889..651d4deab 100644 --- a/datafiles/data/Nodes/Internal/Values/Struct Set/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Struct_Set/info.json @@ -1,5 +1,6 @@ { "tooltip":"Modify struct", + "spr":"s_node_struct_set", "baseNode":"Node_Struct_Set", "io":[ "struct" diff --git a/datafiles/data/Nodes/Internal/Values/Surface from Buffer/info.json b/datafiles/data/Nodes/Internal/Values/Node_Surface_From_Buffer/info.json similarity index 77% rename from datafiles/data/Nodes/Internal/Values/Surface from Buffer/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Surface_From_Buffer/info.json index 6aa145f8d..88775fbb0 100644 --- a/datafiles/data/Nodes/Internal/Values/Surface from Buffer/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Surface_From_Buffer/info.json @@ -3,6 +3,8 @@ "alias":[ "buffer to surface" ], + "spr":"s_node_surface_from_buffer", + "pxc_version":1146.0, "baseNode":"Node_Surface_From_Buffer", "io":[ "surface", diff --git a/datafiles/data/Nodes/Internal/Values/Buffer from Surface/info.json b/datafiles/data/Nodes/Internal/Values/Node_Surface_To_Buffer/info.json similarity index 77% rename from datafiles/data/Nodes/Internal/Values/Buffer from Surface/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Surface_To_Buffer/info.json index ef089d5a0..f2368b9fe 100644 --- a/datafiles/data/Nodes/Internal/Values/Buffer from Surface/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Surface_To_Buffer/info.json @@ -3,6 +3,8 @@ "alias":[ "surface to buffer" ], + "spr":"s_node_surface_to_buffer", + "pxc_version":1146.0, "baseNode":"Node_Surface_To_Buffer", "io":[ "surface", diff --git a/datafiles/data/Nodes/Internal/Values/Surface Data/info.json b/datafiles/data/Nodes/Internal/Values/Node_Surface_data/info.json similarity index 75% rename from datafiles/data/Nodes/Internal/Values/Surface Data/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Surface_data/info.json index 544208a10..27676c7d7 100644 --- a/datafiles/data/Nodes/Internal/Values/Surface Data/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Surface_data/info.json @@ -3,6 +3,8 @@ "alias":[ "surface info" ], + "spr":"s_node_surface_data", + "pxc_version":118070.0, "baseNode":"Node_Surface_data", "io":[ "surface" diff --git a/datafiles/data/Nodes/Internal/Values/To Number/info.json b/datafiles/data/Nodes/Internal/Values/Node_To_Number/info.json similarity index 76% rename from datafiles/data/Nodes/Internal/Values/To Number/info.json rename to datafiles/data/Nodes/Internal/Values/Node_To_Number/info.json index a43a85477..f0d70e5fc 100644 --- a/datafiles/data/Nodes/Internal/Values/To Number/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_To_Number/info.json @@ -1,5 +1,7 @@ { "tooltip":"Convert string to number, supports scientific format (e.g. 1e-2 = 0.02).", + "spr":"s_node_to_number", + "pxc_version":1145.0, "baseNode":"Node_To_Number", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Values/To Text/info.json b/datafiles/data/Nodes/Internal/Values/Node_To_Text/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/Values/To Text/info.json rename to datafiles/data/Nodes/Internal/Values/Node_To_Text/info.json index 838749859..e1707e21b 100644 --- a/datafiles/data/Nodes/Internal/Values/To Text/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_To_Text/info.json @@ -1,5 +1,7 @@ { "tooltip":"Convert string to number.", + "spr":"s_node_to_text", + "pxc_version":1145.0, "baseNode":"Node_To_Text", "io":[ "text" diff --git a/datafiles/data/Nodes/Internal/Values/Transform Array/info.json b/datafiles/data/Nodes/Internal/Values/Node_Transform_Array/info.json similarity index 70% rename from datafiles/data/Nodes/Internal/Values/Transform Array/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Transform_Array/info.json index 4f93ee0e9..f25a6ce88 100644 --- a/datafiles/data/Nodes/Internal/Values/Transform Array/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Transform_Array/info.json @@ -1,5 +1,7 @@ { "tooltip":"Generate transfomation array.", + "spr":"s_node_transform_array", + "pxc_version":1146.0, "baseNode":"Node_Transform_Array", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Values/Trigger/info.json b/datafiles/data/Nodes/Internal/Values/Node_Trigger/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Values/Trigger/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Trigger/info.json index 98c12a4e1..c9ea680ec 100644 --- a/datafiles/data/Nodes/Internal/Values/Trigger/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Trigger/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create trigger value.", + "spr":"s_node_trigger", + "pxc_version":1140.0, "baseNode":"Node_Trigger", "io":[ "boolean", diff --git a/datafiles/data/Nodes/Internal/Values/Boolean Trigger/info.json b/datafiles/data/Nodes/Internal/Values/Node_Trigger_Bool/info.json similarity index 75% rename from datafiles/data/Nodes/Internal/Values/Boolean Trigger/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Trigger_Bool/info.json index 0e24eacf3..2fe3107b2 100644 --- a/datafiles/data/Nodes/Internal/Values/Boolean Trigger/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Trigger_Bool/info.json @@ -1,5 +1,7 @@ { "tooltip":"Create trigger based on boolean condition.", + "spr":"s_node_trigger_bool", + "pxc_version":1140.0, "baseNode":"Node_Trigger_Bool", "io":[ "boolean", diff --git a/datafiles/data/Nodes/Internal/Values/Unicode/info.json b/datafiles/data/Nodes/Internal/Values/Node_Unicode/info.json similarity index 82% rename from datafiles/data/Nodes/Internal/Values/Unicode/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Unicode/info.json index c5c3872f1..f8423932e 100644 --- a/datafiles/data/Nodes/Internal/Values/Unicode/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Unicode/info.json @@ -1,5 +1,6 @@ { "tooltip":"Convert unicode id into string.", + "spr":"s_node_unicode", "baseNode":"Node_Unicode", "io":[ "text" diff --git a/datafiles/data/Nodes/Internal/Values/Vector2/info.json b/datafiles/data/Nodes/Internal/Values/Node_Vector2/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Values/Vector2/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Vector2/info.json index 99450f38b..0199cd3fe 100644 --- a/datafiles/data/Nodes/Internal/Values/Vector2/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Vector2/info.json @@ -1,5 +1,6 @@ { "tooltip":"Genearte vector composite of 2 members.", + "spr":"s_node_vector2", "baseNode":"Node_Vector2", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Values/Vector3/info.json b/datafiles/data/Nodes/Internal/Values/Node_Vector3/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Values/Vector3/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Vector3/info.json index f47d656e6..dd90d2cd0 100644 --- a/datafiles/data/Nodes/Internal/Values/Vector3/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Vector3/info.json @@ -1,5 +1,6 @@ { "tooltip":"Genearte vector composite of 3 members.", + "spr":"s_node_vector3", "baseNode":"Node_Vector3", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Values/Vector4/info.json b/datafiles/data/Nodes/Internal/Values/Node_Vector4/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Values/Vector4/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Vector4/info.json index 43f832ec8..19ccfcd20 100644 --- a/datafiles/data/Nodes/Internal/Values/Vector4/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Vector4/info.json @@ -1,5 +1,6 @@ { "tooltip":"Genearte vector composite of 4 members.", + "spr":"s_node_vector4", "baseNode":"Node_Vector4", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Values/Cross product 2D/info.json b/datafiles/data/Nodes/Internal/Values/Node_Vector_Cross_2D/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Values/Cross product 2D/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Vector_Cross_2D/info.json index 975675cb3..7787dd8a9 100644 --- a/datafiles/data/Nodes/Internal/Values/Cross product 2D/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Vector_Cross_2D/info.json @@ -1,5 +1,7 @@ { "tooltip":"Calculate cross product of 2 vec2s.", + "spr":"s_node_vector_cross_2d", + "pxc_version":1141.0, "baseNode":"Node_Vector_Cross_2D", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Values/Cross product 3D/info.json b/datafiles/data/Nodes/Internal/Values/Node_Vector_Cross_3D/info.json similarity index 71% rename from datafiles/data/Nodes/Internal/Values/Cross product 3D/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Vector_Cross_3D/info.json index d4461a607..84c8a15b4 100644 --- a/datafiles/data/Nodes/Internal/Values/Cross product 3D/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Vector_Cross_3D/info.json @@ -1,5 +1,7 @@ { "tooltip":"Calculate cross product of 2 vec3s.", + "spr":"s_node_vector_cross_3d", + "pxc_version":1141.0, "baseNode":"Node_Vector_Cross_3D", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Values/Dot product/info.json b/datafiles/data/Nodes/Internal/Values/Node_Vector_Dot/info.json similarity index 72% rename from datafiles/data/Nodes/Internal/Values/Dot product/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Vector_Dot/info.json index 3264c318b..1fe5a0231 100644 --- a/datafiles/data/Nodes/Internal/Values/Dot product/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Vector_Dot/info.json @@ -1,5 +1,7 @@ { "tooltip":"Calculate dot product between vectors.", + "spr":"s_node_vector_dot", + "pxc_version":1141.0, "baseNode":"Node_Vector_Dot", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Values/Magnitude/info.json b/datafiles/data/Nodes/Internal/Values/Node_Vector_Magnitude/info.json similarity index 77% rename from datafiles/data/Nodes/Internal/Values/Magnitude/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Vector_Magnitude/info.json index 0f8925c64..3fee2d4d2 100644 --- a/datafiles/data/Nodes/Internal/Values/Magnitude/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Vector_Magnitude/info.json @@ -4,6 +4,8 @@ "vector length", "vector magnitude" ], + "spr":"s_node_vector_magnitude", + "pxc_version":117100.0, "baseNode":"Node_Vector_Magnitude", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Values/Vector Split/info.json b/datafiles/data/Nodes/Internal/Values/Node_Vector_Split/info.json similarity index 83% rename from datafiles/data/Nodes/Internal/Values/Vector Split/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Vector_Split/info.json index 1231557ee..3bbed7bae 100644 --- a/datafiles/data/Nodes/Internal/Values/Vector Split/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Vector_Split/info.json @@ -1,5 +1,6 @@ { "tooltip":"Split vector (up to 4) into individual components.", + "spr":"s_node_vector_split", "baseNode":"Node_Vector_Split", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/Values/Swizzle/info.json b/datafiles/data/Nodes/Internal/Values/Node_Vector_Swizzle/info.json similarity index 77% rename from datafiles/data/Nodes/Internal/Values/Swizzle/info.json rename to datafiles/data/Nodes/Internal/Values/Node_Vector_Swizzle/info.json index eca2d1b37..dbefdae25 100644 --- a/datafiles/data/Nodes/Internal/Values/Swizzle/info.json +++ b/datafiles/data/Nodes/Internal/Values/Node_Vector_Swizzle/info.json @@ -3,6 +3,8 @@ "alias":[ "swap axis" ], + "spr":"s_node_vector_swizzle", + "pxc_version":117100.0, "baseNode":"Node_Vector_Swizzle", "io":[ "float" diff --git a/datafiles/data/Nodes/Internal/pb_Array/Node_Array/info.json b/datafiles/data/Nodes/Internal/pb_Array/Node_Array/info.json new file mode 100644 index 000000000..25817183a --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Array/Node_Array/info.json @@ -0,0 +1,11 @@ +{ + "tooltip":"Create an array.", + "spr":"s_node_array", + "show_in_recent":false, + "baseNode":"Node_Array", + "io":[ + "any", + "pbBox" + ], + "name":"Array" +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Array/Node_Array_Get/info.json b/datafiles/data/Nodes/Internal/pb_Array/Node_Array_Get/info.json new file mode 100644 index 000000000..a4bd60759 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Array/Node_Array_Get/info.json @@ -0,0 +1,14 @@ +{ + "tooltip":"Returns nth member in an array.", + "alias":[ + "get array" + ], + "spr":"s_node_array_get", + "show_in_recent":false, + "baseNode":"Node_Array_Get", + "io":[ + "any", + "pbBox" + ], + "name":"Array Get" +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Array/Node_Array_Insert/info.json b/datafiles/data/Nodes/Internal/pb_Array/Node_Array_Insert/info.json new file mode 100644 index 000000000..3eb188b11 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Array/Node_Array_Insert/info.json @@ -0,0 +1,15 @@ +{ + "tooltip":"Insert member into an array at any position.", + "alias":[ + "insert array" + ], + "spr":"s_node_array_insert", + "pxc_version":1120.0, + "show_in_recent":false, + "baseNode":"Node_Array_Insert", + "io":[ + "any", + "pbBox" + ], + "name":"Array Insert" +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Array/Node_Array_Remove/info.json b/datafiles/data/Nodes/Internal/pb_Array/Node_Array_Remove/info.json new file mode 100644 index 000000000..b5fcf8727 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Array/Node_Array_Remove/info.json @@ -0,0 +1,17 @@ +{ + "tooltip":"Remove member in an array.", + "alias":[ + "remove array", + "delete array", + "array delete" + ], + "spr":"s_node_array_remove", + "pxc_version":1120.0, + "show_in_recent":false, + "baseNode":"Node_Array_Remove", + "io":[ + "any", + "pbBox" + ], + "name":"Array Remove" +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Array/Node_Array_Set/info.json b/datafiles/data/Nodes/Internal/pb_Array/Node_Array_Set/info.json new file mode 100644 index 000000000..fa22f1943 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Array/Node_Array_Set/info.json @@ -0,0 +1,15 @@ +{ + "tooltip":"Set array member based on index.", + "alias":[ + "set array" + ], + "spr":"s_node_array_set", + "pxc_version":1120.0, + "show_in_recent":false, + "baseNode":"Node_Array_Set", + "io":[ + "any", + "pbBox" + ], + "name":"Array Set" +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Contract/info.json b/datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Contract/info.json new file mode 100644 index 000000000..97c391865 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Contract/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_box_contract", + "baseNode":"Node_PB_Box_Contract", + "io":[ + "pbBox" + ], + "name":"Contract", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Divide/info.json b/datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Divide/info.json new file mode 100644 index 000000000..a7478c383 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Divide/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_box_divide", + "baseNode":"Node_PB_Box_Divide", + "io":[ + "pbBox" + ], + "name":"Divide", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Divide_Grid/info.json b/datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Divide_Grid/info.json new file mode 100644 index 000000000..60fc02528 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Divide_Grid/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_box_divide_grid", + "baseNode":"Node_PB_Box_Divide_Grid", + "io":[ + "pbBox" + ], + "name":"Divide Grid", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Inset/info.json b/datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Inset/info.json new file mode 100644 index 000000000..de2ef16f9 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Inset/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_box_inset", + "baseNode":"Node_PB_Box_Inset", + "io":[ + "pbBox" + ], + "name":"Inset", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Mirror/info.json b/datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Mirror/info.json new file mode 100644 index 000000000..9dd156a03 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Mirror/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_box_mirror", + "baseNode":"Node_PB_Box_Mirror", + "io":[ + "pbBox" + ], + "name":"Mirror", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Split/info.json b/datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Split/info.json new file mode 100644 index 000000000..856f5d75d --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Split/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_box_split", + "baseNode":"Node_PB_Box_Split", + "io":[ + "pbBox" + ], + "name":"Split", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Transform/info.json b/datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Transform/info.json new file mode 100644 index 000000000..e0530c4c2 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Box/Node_PB_Box_Transform/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_box_transform", + "baseNode":"Node_PB_Box_Transform", + "io":[ + "pbBox" + ], + "name":"Transform", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Box/Node_PB_Layer/info.json b/datafiles/data/Nodes/Internal/pb_Box/Node_PB_Layer/info.json new file mode 100644 index 000000000..2375cd23b --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Box/Node_PB_Layer/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_layer", + "baseNode":"Node_PB_Layer", + "io":[ + "pbBox" + ], + "name":"Layer", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Angle/info.json b/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Angle/info.json new file mode 100644 index 000000000..a51f2d7c1 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Angle/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_draw_angle", + "baseNode":"Node_PB_Draw_Angle", + "io":[ + "pbBox" + ], + "name":"Angle", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Blob/info.json b/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Blob/info.json new file mode 100644 index 000000000..e12888606 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Blob/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_draw_blob", + "baseNode":"Node_PB_Draw_Blob", + "io":[ + "pbBox" + ], + "name":"Blob", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Diamond/info.json b/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Diamond/info.json new file mode 100644 index 000000000..79208a70b --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Diamond/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_draw_diamond", + "baseNode":"Node_PB_Draw_Diamond", + "io":[ + "pbBox" + ], + "name":"Diamond", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Ellipse/info.json b/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Ellipse/info.json new file mode 100644 index 000000000..cb2d53eec --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Ellipse/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_draw_ellipse", + "baseNode":"Node_PB_Draw_Ellipse", + "io":[ + "pbBox" + ], + "name":"Ellipse", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Fill/info.json b/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Fill/info.json new file mode 100644 index 000000000..8dc30dbd4 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Fill/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_draw_fill", + "baseNode":"Node_PB_Draw_Fill", + "io":[ + "pbBox" + ], + "name":"Fill", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Line/info.json b/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Line/info.json new file mode 100644 index 000000000..702a009d0 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Line/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_draw_line", + "baseNode":"Node_PB_Draw_Line", + "io":[ + "pbBox" + ], + "name":"Line", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Rectangle/info.json b/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Rectangle/info.json new file mode 100644 index 000000000..a950e4b89 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Rectangle/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_draw_rectangle", + "baseNode":"Node_PB_Draw_Rectangle", + "io":[ + "pbBox" + ], + "name":"Rectangle", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Round_Rectangle/info.json b/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Round_Rectangle/info.json new file mode 100644 index 000000000..ba210252a --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Round_Rectangle/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_draw_round_rectangle", + "baseNode":"Node_PB_Draw_Round_Rectangle", + "io":[ + "pbBox" + ], + "name":"Round Rectangle", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Semi_Ellipse/info.json b/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Semi_Ellipse/info.json new file mode 100644 index 000000000..37e753666 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Semi_Ellipse/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_draw_semi_ellipse", + "baseNode":"Node_PB_Draw_Semi_Ellipse", + "io":[ + "pbBox" + ], + "name":"Semi-Ellipse", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Trapezoid/info.json b/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Trapezoid/info.json new file mode 100644 index 000000000..5b5da3b10 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Draw/Node_PB_Draw_Trapezoid/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_draw_trapezoid", + "baseNode":"Node_PB_Draw_Trapezoid", + "io":[ + "pbBox" + ], + "name":"Trapezoid", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Add/info.json b/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Add/info.json new file mode 100644 index 000000000..59c32f2b3 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Add/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_fx_add", + "baseNode":"Node_PB_Fx_Add", + "io":[ + "pbBox" + ], + "name":"Add", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Brick/info.json b/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Brick/info.json new file mode 100644 index 000000000..418db95c3 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Brick/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_fx_brick", + "baseNode":"Node_PB_Fx_Brick", + "io":[ + "pbBox" + ], + "name":"Brick", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Hash/info.json b/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Hash/info.json new file mode 100644 index 000000000..3123dba82 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Hash/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_fx_hash", + "baseNode":"Node_PB_Fx_Hash", + "io":[ + "pbBox" + ], + "name":"Hashing", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Highlight/info.json b/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Highlight/info.json new file mode 100644 index 000000000..80545dfeb --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Highlight/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_fx_highlight", + "baseNode":"Node_PB_Fx_Highlight", + "io":[ + "pbBox" + ], + "name":"Highlight", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Intersect/info.json b/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Intersect/info.json new file mode 100644 index 000000000..138636e07 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Intersect/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_fx_intersect", + "baseNode":"Node_PB_Fx_Intersect", + "io":[ + "pbBox" + ], + "name":"Intersect", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Outline/info.json b/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Outline/info.json new file mode 100644 index 000000000..1b435f469 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Outline/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_fx_outline", + "baseNode":"Node_PB_Fx_Outline", + "io":[ + "pbBox" + ], + "name":"Outline", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Radial/info.json b/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Radial/info.json new file mode 100644 index 000000000..0ebcc95dc --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Radial/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_fx_radial", + "baseNode":"Node_PB_Fx_Radial", + "io":[ + "pbBox" + ], + "name":"Radial", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Shading/info.json b/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Shading/info.json new file mode 100644 index 000000000..5d3d18da7 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Shading/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_fx_shading", + "baseNode":"Node_PB_Fx_Shading", + "io":[ + "pbBox" + ], + "name":"Shading", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Stack/info.json b/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Stack/info.json new file mode 100644 index 000000000..a1d3e4acb --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Stack/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_fx_stack", + "baseNode":"Node_PB_Fx_Stack", + "io":[ + "pbBox" + ], + "name":"Stack", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Strip/info.json b/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Strip/info.json new file mode 100644 index 000000000..a75badb47 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Strip/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_fx_strip", + "baseNode":"Node_PB_Fx_Strip", + "io":[ + "pbBox" + ], + "name":"Strip", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Subtract/info.json b/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Subtract/info.json new file mode 100644 index 000000000..a30c4a92a --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Effects/Node_PB_Fx_Subtract/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_pb_fx_subtract", + "baseNode":"Node_PB_Fx_Subtract", + "io":[ + "pbBox" + ], + "name":"Subtract", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Group/Node_Group_Input/info.json b/datafiles/data/Nodes/Internal/pb_Group/Node_Group_Input/info.json new file mode 100644 index 000000000..9be62189a --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Group/Node_Group_Input/info.json @@ -0,0 +1,17 @@ +{ + "spr":"s_node_group_input", + "baseNode":"Node_Group_Input", + "io":[ + "any", + "any", + "any", + "any", + "any", + "any", + "any", + "any", + "any" + ], + "name":"Input", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pb_Group/Node_Group_Output/info.json b/datafiles/data/Nodes/Internal/pb_Group/Node_Group_Output/info.json new file mode 100644 index 000000000..c84ac4769 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pb_Group/Node_Group_Output/info.json @@ -0,0 +1,17 @@ +{ + "spr":"s_node_group_output", + "baseNode":"Node_Group_Output", + "io":[ + "any", + "any", + "any", + "any", + "any", + "any", + "any", + "any", + "any" + ], + "name":"Output", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pcx_Flow Control/Node_PCX_Condition/info.json b/datafiles/data/Nodes/Internal/pcx_Flow Control/Node_PCX_Condition/info.json new file mode 100644 index 000000000..c54027d4c --- /dev/null +++ b/datafiles/data/Nodes/Internal/pcx_Flow Control/Node_PCX_Condition/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_array", + "baseNode":"Node_PCX_Condition", + "io":[ + "pbBox" + ], + "name":"Condition", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_Array_Get/info.json b/datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_Array_Get/info.json new file mode 100644 index 000000000..617bd0075 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_Array_Get/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_array", + "baseNode":"Node_PCX_Array_Get", + "io":[ + "pbBox" + ], + "name":"Array Get", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_Array_Set/info.json b/datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_Array_Set/info.json new file mode 100644 index 000000000..503364f89 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_Array_Set/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_array", + "baseNode":"Node_PCX_Array_Set", + "io":[ + "pbBox" + ], + "name":"Array Set", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_Equation/info.json b/datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_Equation/info.json new file mode 100644 index 000000000..d0ea5133e --- /dev/null +++ b/datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_Equation/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_array", + "baseNode":"Node_PCX_Equation", + "io":[ + "pbBox" + ], + "name":"Equation", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_fn_Math/info.json b/datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_fn_Math/info.json new file mode 100644 index 000000000..55de48651 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_fn_Math/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_array", + "baseNode":"Node_PCX_fn_Math", + "io":[ + "pbBox" + ], + "name":"Math", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_fn_Random/info.json b/datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_fn_Random/info.json new file mode 100644 index 000000000..47a024d40 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_fn_Random/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_array", + "baseNode":"Node_PCX_fn_Random", + "io":[ + "pbBox" + ], + "name":"Random", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_fn_Surface_Height/info.json b/datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_fn_Surface_Height/info.json new file mode 100644 index 000000000..bb84b69a9 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_fn_Surface_Height/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_array", + "baseNode":"Node_PCX_fn_Surface_Height", + "io":[ + "pbBox" + ], + "name":"Surface Height", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_fn_Surface_Width/info.json b/datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_fn_Surface_Width/info.json new file mode 100644 index 000000000..d2597a323 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pcx_Functions/Node_PCX_fn_Surface_Width/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_array", + "baseNode":"Node_PCX_fn_Surface_Width", + "io":[ + "pbBox" + ], + "name":"Surface Width", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pcx_Variable/Node_PCX_fn_var/info.json b/datafiles/data/Nodes/Internal/pcx_Variable/Node_PCX_fn_var/info.json new file mode 100644 index 000000000..afb3c1f40 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pcx_Variable/Node_PCX_fn_var/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_array", + "baseNode":"Node_PCX_fn_var", + "io":[ + "pbBox" + ], + "name":"Fn Variable", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/pcx_Variable/Node_PCX_var/info.json b/datafiles/data/Nodes/Internal/pcx_Variable/Node_PCX_var/info.json new file mode 100644 index 000000000..509891061 --- /dev/null +++ b/datafiles/data/Nodes/Internal/pcx_Variable/Node_PCX_var/info.json @@ -0,0 +1,9 @@ +{ + "spr":"s_node_array", + "baseNode":"Node_PCX_var", + "io":[ + "pbBox" + ], + "name":"Variable", + "show_in_recent":false +} \ No newline at end of file diff --git a/datafiles/data/Tooltip.zip b/datafiles/data/Nodes/Tooltip.zip similarity index 100% rename from datafiles/data/Tooltip.zip rename to datafiles/data/Nodes/Tooltip.zip diff --git a/datafiles/data/Tooltip/Node_2D_light.png b/datafiles/data/Nodes/Tooltip/Node_2D_light.png similarity index 100% rename from datafiles/data/Tooltip/Node_2D_light.png rename to datafiles/data/Nodes/Tooltip/Node_2D_light.png diff --git a/datafiles/data/Tooltip/Node_9Slice.png b/datafiles/data/Nodes/Tooltip/Node_9Slice.png similarity index 100% rename from datafiles/data/Tooltip/Node_9Slice.png rename to datafiles/data/Nodes/Tooltip/Node_9Slice.png diff --git a/datafiles/data/Tooltip/Node_Alpha_Cutoff.png b/datafiles/data/Nodes/Tooltip/Node_Alpha_Cutoff.png similarity index 100% rename from datafiles/data/Tooltip/Node_Alpha_Cutoff.png rename to datafiles/data/Nodes/Tooltip/Node_Alpha_Cutoff.png diff --git a/datafiles/data/Tooltip/Node_Alpha_Grey.png b/datafiles/data/Nodes/Tooltip/Node_Alpha_Grey.png similarity index 100% rename from datafiles/data/Tooltip/Node_Alpha_Grey.png rename to datafiles/data/Nodes/Tooltip/Node_Alpha_Grey.png diff --git a/datafiles/data/Tooltip/Node_Atlas.png b/datafiles/data/Nodes/Tooltip/Node_Atlas.png similarity index 100% rename from datafiles/data/Tooltip/Node_Atlas.png rename to datafiles/data/Nodes/Tooltip/Node_Atlas.png diff --git a/datafiles/data/Tooltip/Node_Average.png b/datafiles/data/Nodes/Tooltip/Node_Average.png similarity index 100% rename from datafiles/data/Tooltip/Node_Average.png rename to datafiles/data/Nodes/Tooltip/Node_Average.png diff --git a/datafiles/data/Tooltip/Node_BW.png b/datafiles/data/Nodes/Tooltip/Node_BW.png similarity index 100% rename from datafiles/data/Tooltip/Node_BW.png rename to datafiles/data/Nodes/Tooltip/Node_BW.png diff --git a/datafiles/data/Tooltip/Node_Bend.png b/datafiles/data/Nodes/Tooltip/Node_Bend.png similarity index 100% rename from datafiles/data/Tooltip/Node_Bend.png rename to datafiles/data/Nodes/Tooltip/Node_Bend.png diff --git a/datafiles/data/Tooltip/Node_Bevel.png b/datafiles/data/Nodes/Tooltip/Node_Bevel.png similarity index 100% rename from datafiles/data/Tooltip/Node_Bevel.png rename to datafiles/data/Nodes/Tooltip/Node_Bevel.png diff --git a/datafiles/data/Tooltip/Node_Blend.png b/datafiles/data/Nodes/Tooltip/Node_Blend.png similarity index 100% rename from datafiles/data/Tooltip/Node_Blend.png rename to datafiles/data/Nodes/Tooltip/Node_Blend.png diff --git a/datafiles/data/Tooltip/Node_Blend_Edge.png b/datafiles/data/Nodes/Tooltip/Node_Blend_Edge.png similarity index 100% rename from datafiles/data/Tooltip/Node_Blend_Edge.png rename to datafiles/data/Nodes/Tooltip/Node_Blend_Edge.png diff --git a/datafiles/data/Tooltip/Node_Blobify.png b/datafiles/data/Nodes/Tooltip/Node_Blobify.png similarity index 100% rename from datafiles/data/Tooltip/Node_Blobify.png rename to datafiles/data/Nodes/Tooltip/Node_Blobify.png diff --git a/datafiles/data/Tooltip/Node_Bloom.png b/datafiles/data/Nodes/Tooltip/Node_Bloom.png similarity index 100% rename from datafiles/data/Tooltip/Node_Bloom.png rename to datafiles/data/Nodes/Tooltip/Node_Bloom.png diff --git a/datafiles/data/Tooltip/Node_Blur.png b/datafiles/data/Nodes/Tooltip/Node_Blur.png similarity index 100% rename from datafiles/data/Tooltip/Node_Blur.png rename to datafiles/data/Nodes/Tooltip/Node_Blur.png diff --git a/datafiles/data/Tooltip/Node_Blur_Bokeh.png b/datafiles/data/Nodes/Tooltip/Node_Blur_Bokeh.png similarity index 100% rename from datafiles/data/Tooltip/Node_Blur_Bokeh.png rename to datafiles/data/Nodes/Tooltip/Node_Blur_Bokeh.png diff --git a/datafiles/data/Tooltip/Node_Blur_Contrast.png b/datafiles/data/Nodes/Tooltip/Node_Blur_Contrast.png similarity index 100% rename from datafiles/data/Tooltip/Node_Blur_Contrast.png rename to datafiles/data/Nodes/Tooltip/Node_Blur_Contrast.png diff --git a/datafiles/data/Tooltip/Node_Blur_Directional.png b/datafiles/data/Nodes/Tooltip/Node_Blur_Directional.png similarity index 100% rename from datafiles/data/Tooltip/Node_Blur_Directional.png rename to datafiles/data/Nodes/Tooltip/Node_Blur_Directional.png diff --git a/datafiles/data/Tooltip/Node_Blur_Path.png b/datafiles/data/Nodes/Tooltip/Node_Blur_Path.png similarity index 100% rename from datafiles/data/Tooltip/Node_Blur_Path.png rename to datafiles/data/Nodes/Tooltip/Node_Blur_Path.png diff --git a/datafiles/data/Tooltip/Node_Blur_Radial.png b/datafiles/data/Nodes/Tooltip/Node_Blur_Radial.png similarity index 100% rename from datafiles/data/Tooltip/Node_Blur_Radial.png rename to datafiles/data/Nodes/Tooltip/Node_Blur_Radial.png diff --git a/datafiles/data/Tooltip/Node_Blur_Shape.png b/datafiles/data/Nodes/Tooltip/Node_Blur_Shape.png similarity index 100% rename from datafiles/data/Tooltip/Node_Blur_Shape.png rename to datafiles/data/Nodes/Tooltip/Node_Blur_Shape.png diff --git a/datafiles/data/Tooltip/Node_Blur_Simple.png b/datafiles/data/Nodes/Tooltip/Node_Blur_Simple.png similarity index 100% rename from datafiles/data/Tooltip/Node_Blur_Simple.png rename to datafiles/data/Nodes/Tooltip/Node_Blur_Simple.png diff --git a/datafiles/data/Tooltip/Node_Blur_Slope.png b/datafiles/data/Nodes/Tooltip/Node_Blur_Slope.png similarity index 100% rename from datafiles/data/Tooltip/Node_Blur_Slope.png rename to datafiles/data/Nodes/Tooltip/Node_Blur_Slope.png diff --git a/datafiles/data/Tooltip/Node_Blur_Zoom.png b/datafiles/data/Nodes/Tooltip/Node_Blur_Zoom.png similarity index 100% rename from datafiles/data/Tooltip/Node_Blur_Zoom.png rename to datafiles/data/Nodes/Tooltip/Node_Blur_Zoom.png diff --git a/datafiles/data/Tooltip/Node_Box_Pattern.png b/datafiles/data/Nodes/Tooltip/Node_Box_Pattern.png similarity index 100% rename from datafiles/data/Tooltip/Node_Box_Pattern.png rename to datafiles/data/Nodes/Tooltip/Node_Box_Pattern.png diff --git a/datafiles/data/Tooltip/Node_Brush_Linear.png b/datafiles/data/Nodes/Tooltip/Node_Brush_Linear.png similarity index 100% rename from datafiles/data/Tooltip/Node_Brush_Linear.png rename to datafiles/data/Nodes/Tooltip/Node_Brush_Linear.png diff --git a/datafiles/data/Tooltip/Node_Camera.png b/datafiles/data/Nodes/Tooltip/Node_Camera.png similarity index 100% rename from datafiles/data/Tooltip/Node_Camera.png rename to datafiles/data/Nodes/Tooltip/Node_Camera.png diff --git a/datafiles/data/Tooltip/Node_Canvas.png b/datafiles/data/Nodes/Tooltip/Node_Canvas.png similarity index 100% rename from datafiles/data/Tooltip/Node_Canvas.png rename to datafiles/data/Nodes/Tooltip/Node_Canvas.png diff --git a/datafiles/data/Tooltip/Node_Caustic.png b/datafiles/data/Nodes/Tooltip/Node_Caustic.png similarity index 100% rename from datafiles/data/Tooltip/Node_Caustic.png rename to datafiles/data/Nodes/Tooltip/Node_Caustic.png diff --git a/datafiles/data/Tooltip/Node_Cellular.png b/datafiles/data/Nodes/Tooltip/Node_Cellular.png similarity index 100% rename from datafiles/data/Tooltip/Node_Cellular.png rename to datafiles/data/Nodes/Tooltip/Node_Cellular.png diff --git a/datafiles/data/Tooltip/Node_Checker.png b/datafiles/data/Nodes/Tooltip/Node_Checker.png similarity index 100% rename from datafiles/data/Tooltip/Node_Checker.png rename to datafiles/data/Nodes/Tooltip/Node_Checker.png diff --git a/datafiles/data/Tooltip/Node_Chromatic_Aberration.png b/datafiles/data/Nodes/Tooltip/Node_Chromatic_Aberration.png similarity index 100% rename from datafiles/data/Tooltip/Node_Chromatic_Aberration.png rename to datafiles/data/Nodes/Tooltip/Node_Chromatic_Aberration.png diff --git a/datafiles/data/Tooltip/Node_Color_Remove.png b/datafiles/data/Nodes/Tooltip/Node_Color_Remove.png similarity index 100% rename from datafiles/data/Tooltip/Node_Color_Remove.png rename to datafiles/data/Nodes/Tooltip/Node_Color_Remove.png diff --git a/datafiles/data/Tooltip/Node_Color_adjust.png b/datafiles/data/Nodes/Tooltip/Node_Color_adjust.png similarity index 100% rename from datafiles/data/Tooltip/Node_Color_adjust.png rename to datafiles/data/Nodes/Tooltip/Node_Color_adjust.png diff --git a/datafiles/data/Tooltip/Node_Color_replace.png b/datafiles/data/Nodes/Tooltip/Node_Color_replace.png similarity index 100% rename from datafiles/data/Tooltip/Node_Color_replace.png rename to datafiles/data/Nodes/Tooltip/Node_Color_replace.png diff --git a/datafiles/data/Tooltip/Node_Colorize.png b/datafiles/data/Nodes/Tooltip/Node_Colorize.png similarity index 100% rename from datafiles/data/Tooltip/Node_Colorize.png rename to datafiles/data/Nodes/Tooltip/Node_Colorize.png diff --git a/datafiles/data/Tooltip/Node_Colors_Replace.png b/datafiles/data/Nodes/Tooltip/Node_Colors_Replace.png similarity index 100% rename from datafiles/data/Tooltip/Node_Colors_Replace.png rename to datafiles/data/Nodes/Tooltip/Node_Colors_Replace.png diff --git a/datafiles/data/Tooltip/Node_Combine_HSV.png b/datafiles/data/Nodes/Tooltip/Node_Combine_HSV.png similarity index 100% rename from datafiles/data/Tooltip/Node_Combine_HSV.png rename to datafiles/data/Nodes/Tooltip/Node_Combine_HSV.png diff --git a/datafiles/data/Tooltip/Node_Combine_RGB.png b/datafiles/data/Nodes/Tooltip/Node_Combine_RGB.png similarity index 100% rename from datafiles/data/Tooltip/Node_Combine_RGB.png rename to datafiles/data/Nodes/Tooltip/Node_Combine_RGB.png diff --git a/datafiles/data/Tooltip/Node_Composite.png b/datafiles/data/Nodes/Tooltip/Node_Composite.png similarity index 100% rename from datafiles/data/Tooltip/Node_Composite.png rename to datafiles/data/Nodes/Tooltip/Node_Composite.png diff --git a/datafiles/data/Tooltip/Node_Convolution.png b/datafiles/data/Nodes/Tooltip/Node_Convolution.png similarity index 100% rename from datafiles/data/Tooltip/Node_Convolution.png rename to datafiles/data/Nodes/Tooltip/Node_Convolution.png diff --git a/datafiles/data/Tooltip/Node_Corner.png b/datafiles/data/Nodes/Tooltip/Node_Corner.png similarity index 100% rename from datafiles/data/Tooltip/Node_Corner.png rename to datafiles/data/Nodes/Tooltip/Node_Corner.png diff --git a/datafiles/data/Tooltip/Node_Crop.png b/datafiles/data/Nodes/Tooltip/Node_Crop.png similarity index 100% rename from datafiles/data/Tooltip/Node_Crop.png rename to datafiles/data/Nodes/Tooltip/Node_Crop.png diff --git a/datafiles/data/Tooltip/Node_Crop_Content.png b/datafiles/data/Nodes/Tooltip/Node_Crop_Content.png similarity index 100% rename from datafiles/data/Tooltip/Node_Crop_Content.png rename to datafiles/data/Nodes/Tooltip/Node_Crop_Content.png diff --git a/datafiles/data/Tooltip/Node_Curve.png b/datafiles/data/Nodes/Tooltip/Node_Curve.png similarity index 100% rename from datafiles/data/Tooltip/Node_Curve.png rename to datafiles/data/Nodes/Tooltip/Node_Curve.png diff --git a/datafiles/data/Tooltip/Node_Curve_HSV.png b/datafiles/data/Nodes/Tooltip/Node_Curve_HSV.png similarity index 100% rename from datafiles/data/Tooltip/Node_Curve_HSV.png rename to datafiles/data/Nodes/Tooltip/Node_Curve_HSV.png diff --git a/datafiles/data/Tooltip/Node_Diffuse.png b/datafiles/data/Nodes/Tooltip/Node_Diffuse.png similarity index 100% rename from datafiles/data/Tooltip/Node_Diffuse.png rename to datafiles/data/Nodes/Tooltip/Node_Diffuse.png diff --git a/datafiles/data/Tooltip/Node_Dilate.png b/datafiles/data/Nodes/Tooltip/Node_Dilate.png similarity index 100% rename from datafiles/data/Tooltip/Node_Dilate.png rename to datafiles/data/Nodes/Tooltip/Node_Dilate.png diff --git a/datafiles/data/Tooltip/Node_Displace.png b/datafiles/data/Nodes/Tooltip/Node_Displace.png similarity index 100% rename from datafiles/data/Tooltip/Node_Displace.png rename to datafiles/data/Nodes/Tooltip/Node_Displace.png diff --git a/datafiles/data/Tooltip/Node_Dither.png b/datafiles/data/Nodes/Tooltip/Node_Dither.png similarity index 100% rename from datafiles/data/Tooltip/Node_Dither.png rename to datafiles/data/Nodes/Tooltip/Node_Dither.png diff --git a/datafiles/data/Tooltip/Node_Edge_Detect.png b/datafiles/data/Nodes/Tooltip/Node_Edge_Detect.png similarity index 100% rename from datafiles/data/Tooltip/Node_Edge_Detect.png rename to datafiles/data/Nodes/Tooltip/Node_Edge_Detect.png diff --git a/datafiles/data/Tooltip/Node_Erode.png b/datafiles/data/Nodes/Tooltip/Node_Erode.png similarity index 100% rename from datafiles/data/Tooltip/Node_Erode.png rename to datafiles/data/Nodes/Tooltip/Node_Erode.png diff --git a/datafiles/data/Tooltip/Node_Export.png b/datafiles/data/Nodes/Tooltip/Node_Export.png similarity index 100% rename from datafiles/data/Tooltip/Node_Export.png rename to datafiles/data/Nodes/Tooltip/Node_Export.png diff --git a/datafiles/data/Tooltip/Node_FLIP_Group_Inline.png b/datafiles/data/Nodes/Tooltip/Node_FLIP_Group_Inline.png similarity index 100% rename from datafiles/data/Tooltip/Node_FLIP_Group_Inline.png rename to datafiles/data/Nodes/Tooltip/Node_FLIP_Group_Inline.png diff --git a/datafiles/data/Tooltip/Node_FXAA.png b/datafiles/data/Nodes/Tooltip/Node_FXAA.png similarity index 100% rename from datafiles/data/Tooltip/Node_FXAA.png rename to datafiles/data/Nodes/Tooltip/Node_FXAA.png diff --git a/datafiles/data/Tooltip/Node_Flip.png b/datafiles/data/Nodes/Tooltip/Node_Flip.png similarity index 100% rename from datafiles/data/Tooltip/Node_Flip.png rename to datafiles/data/Nodes/Tooltip/Node_Flip.png diff --git a/datafiles/data/Tooltip/Node_Flood_Fill.png b/datafiles/data/Nodes/Tooltip/Node_Flood_Fill.png similarity index 100% rename from datafiles/data/Tooltip/Node_Flood_Fill.png rename to datafiles/data/Nodes/Tooltip/Node_Flood_Fill.png diff --git a/datafiles/data/Tooltip/Node_Flow_Noise.png b/datafiles/data/Nodes/Tooltip/Node_Flow_Noise.png similarity index 100% rename from datafiles/data/Tooltip/Node_Flow_Noise.png rename to datafiles/data/Nodes/Tooltip/Node_Flow_Noise.png diff --git a/datafiles/data/Tooltip/Node_Fold_Noise.png b/datafiles/data/Nodes/Tooltip/Node_Fold_Noise.png similarity index 100% rename from datafiles/data/Tooltip/Node_Fold_Noise.png rename to datafiles/data/Nodes/Tooltip/Node_Fold_Noise.png diff --git a/datafiles/data/Tooltip/Node_Gabor_Noise.png b/datafiles/data/Nodes/Tooltip/Node_Gabor_Noise.png similarity index 100% rename from datafiles/data/Tooltip/Node_Gabor_Noise.png rename to datafiles/data/Nodes/Tooltip/Node_Gabor_Noise.png diff --git a/datafiles/data/Tooltip/Node_Gamma_Map.png b/datafiles/data/Nodes/Tooltip/Node_Gamma_Map.png similarity index 100% rename from datafiles/data/Tooltip/Node_Gamma_Map.png rename to datafiles/data/Nodes/Tooltip/Node_Gamma_Map.png diff --git a/datafiles/data/Tooltip/Node_Glow.png b/datafiles/data/Nodes/Tooltip/Node_Glow.png similarity index 100% rename from datafiles/data/Tooltip/Node_Glow.png rename to datafiles/data/Nodes/Tooltip/Node_Glow.png diff --git a/datafiles/data/Tooltip/Node_Gradient.png b/datafiles/data/Nodes/Tooltip/Node_Gradient.png similarity index 100% rename from datafiles/data/Tooltip/Node_Gradient.png rename to datafiles/data/Nodes/Tooltip/Node_Gradient.png diff --git a/datafiles/data/Tooltip/Node_Gradient_Points.png b/datafiles/data/Nodes/Tooltip/Node_Gradient_Points.png similarity index 100% rename from datafiles/data/Tooltip/Node_Gradient_Points.png rename to datafiles/data/Nodes/Tooltip/Node_Gradient_Points.png diff --git a/datafiles/data/Tooltip/Node_Grain.png b/datafiles/data/Nodes/Tooltip/Node_Grain.png similarity index 100% rename from datafiles/data/Tooltip/Node_Grain.png rename to datafiles/data/Nodes/Tooltip/Node_Grain.png diff --git a/datafiles/data/Tooltip/Node_Grey_Alpha.png b/datafiles/data/Nodes/Tooltip/Node_Grey_Alpha.png similarity index 100% rename from datafiles/data/Tooltip/Node_Grey_Alpha.png rename to datafiles/data/Nodes/Tooltip/Node_Grey_Alpha.png diff --git a/datafiles/data/Tooltip/Node_Greyscale.png b/datafiles/data/Nodes/Tooltip/Node_Greyscale.png similarity index 100% rename from datafiles/data/Tooltip/Node_Greyscale.png rename to datafiles/data/Nodes/Tooltip/Node_Greyscale.png diff --git a/datafiles/data/Tooltip/Node_Grid.png b/datafiles/data/Nodes/Tooltip/Node_Grid.png similarity index 100% rename from datafiles/data/Tooltip/Node_Grid.png rename to datafiles/data/Nodes/Tooltip/Node_Grid.png diff --git a/datafiles/data/Tooltip/Node_Grid_Hex.png b/datafiles/data/Nodes/Tooltip/Node_Grid_Hex.png similarity index 100% rename from datafiles/data/Tooltip/Node_Grid_Hex.png rename to datafiles/data/Nodes/Tooltip/Node_Grid_Hex.png diff --git a/datafiles/data/Tooltip/Node_Grid_Pentagonal.png b/datafiles/data/Nodes/Tooltip/Node_Grid_Pentagonal.png similarity index 100% rename from datafiles/data/Tooltip/Node_Grid_Pentagonal.png rename to datafiles/data/Nodes/Tooltip/Node_Grid_Pentagonal.png diff --git a/datafiles/data/Tooltip/Node_Grid_Tri.png b/datafiles/data/Nodes/Tooltip/Node_Grid_Tri.png similarity index 100% rename from datafiles/data/Tooltip/Node_Grid_Tri.png rename to datafiles/data/Nodes/Tooltip/Node_Grid_Tri.png diff --git a/datafiles/data/Tooltip/Node_HSV_Channel.png b/datafiles/data/Nodes/Tooltip/Node_HSV_Channel.png similarity index 100% rename from datafiles/data/Tooltip/Node_HSV_Channel.png rename to datafiles/data/Nodes/Tooltip/Node_HSV_Channel.png diff --git a/datafiles/data/Tooltip/Node_Herringbone_Tile.png b/datafiles/data/Nodes/Tooltip/Node_Herringbone_Tile.png similarity index 100% rename from datafiles/data/Tooltip/Node_Herringbone_Tile.png rename to datafiles/data/Nodes/Tooltip/Node_Herringbone_Tile.png diff --git a/datafiles/data/Tooltip/Node_Honeycomb_Noise.png b/datafiles/data/Nodes/Tooltip/Node_Honeycomb_Noise.png similarity index 100% rename from datafiles/data/Tooltip/Node_Honeycomb_Noise.png rename to datafiles/data/Nodes/Tooltip/Node_Honeycomb_Noise.png diff --git a/datafiles/data/Tooltip/Node_Image.png b/datafiles/data/Nodes/Tooltip/Node_Image.png similarity index 100% rename from datafiles/data/Tooltip/Node_Image.png rename to datafiles/data/Nodes/Tooltip/Node_Image.png diff --git a/datafiles/data/Tooltip/Node_Image_Animated.png b/datafiles/data/Nodes/Tooltip/Node_Image_Animated.png similarity index 100% rename from datafiles/data/Tooltip/Node_Image_Animated.png rename to datafiles/data/Nodes/Tooltip/Node_Image_Animated.png diff --git a/datafiles/data/Tooltip/Node_Image_Sequence.png b/datafiles/data/Nodes/Tooltip/Node_Image_Sequence.png similarity index 100% rename from datafiles/data/Tooltip/Node_Image_Sequence.png rename to datafiles/data/Nodes/Tooltip/Node_Image_Sequence.png diff --git a/datafiles/data/Tooltip/Node_Image_Sheet.png b/datafiles/data/Nodes/Tooltip/Node_Image_Sheet.png similarity index 100% rename from datafiles/data/Tooltip/Node_Image_Sheet.png rename to datafiles/data/Nodes/Tooltip/Node_Image_Sheet.png diff --git a/datafiles/data/Tooltip/Node_Image_gif.png b/datafiles/data/Nodes/Tooltip/Node_Image_gif.png similarity index 100% rename from datafiles/data/Tooltip/Node_Image_gif.png rename to datafiles/data/Nodes/Tooltip/Node_Image_gif.png diff --git a/datafiles/data/Tooltip/Node_Interlaced.png b/datafiles/data/Nodes/Tooltip/Node_Interlaced.png similarity index 100% rename from datafiles/data/Tooltip/Node_Interlaced.png rename to datafiles/data/Nodes/Tooltip/Node_Interlaced.png diff --git a/datafiles/data/Tooltip/Node_Interpret_Number.png b/datafiles/data/Nodes/Tooltip/Node_Interpret_Number.png similarity index 100% rename from datafiles/data/Tooltip/Node_Interpret_Number.png rename to datafiles/data/Nodes/Tooltip/Node_Interpret_Number.png diff --git a/datafiles/data/Tooltip/Node_Invert.png b/datafiles/data/Nodes/Tooltip/Node_Invert.png similarity index 100% rename from datafiles/data/Tooltip/Node_Invert.png rename to datafiles/data/Nodes/Tooltip/Node_Invert.png diff --git a/datafiles/data/Tooltip/Node_JPEG.png b/datafiles/data/Nodes/Tooltip/Node_JPEG.png similarity index 100% rename from datafiles/data/Tooltip/Node_JPEG.png rename to datafiles/data/Nodes/Tooltip/Node_JPEG.png diff --git a/datafiles/data/Tooltip/Node_Kuwahara.png b/datafiles/data/Nodes/Tooltip/Node_Kuwahara.png similarity index 100% rename from datafiles/data/Tooltip/Node_Kuwahara.png rename to datafiles/data/Nodes/Tooltip/Node_Kuwahara.png diff --git a/datafiles/data/Tooltip/Node_Level.png b/datafiles/data/Nodes/Tooltip/Node_Level.png similarity index 100% rename from datafiles/data/Tooltip/Node_Level.png rename to datafiles/data/Nodes/Tooltip/Node_Level.png diff --git a/datafiles/data/Tooltip/Node_Level_Selector.png b/datafiles/data/Nodes/Tooltip/Node_Level_Selector.png similarity index 100% rename from datafiles/data/Tooltip/Node_Level_Selector.png rename to datafiles/data/Nodes/Tooltip/Node_Level_Selector.png diff --git a/datafiles/data/Tooltip/Node_Line.png b/datafiles/data/Nodes/Tooltip/Node_Line.png similarity index 100% rename from datafiles/data/Tooltip/Node_Line.png rename to datafiles/data/Nodes/Tooltip/Node_Line.png diff --git a/datafiles/data/Tooltip/Node_Local_Analyze.png b/datafiles/data/Nodes/Tooltip/Node_Local_Analyze.png similarity index 100% rename from datafiles/data/Tooltip/Node_Local_Analyze.png rename to datafiles/data/Nodes/Tooltip/Node_Local_Analyze.png diff --git a/datafiles/data/Tooltip/Node_MK_Blinker.png b/datafiles/data/Nodes/Tooltip/Node_MK_Blinker.png similarity index 100% rename from datafiles/data/Tooltip/Node_MK_Blinker.png rename to datafiles/data/Nodes/Tooltip/Node_MK_Blinker.png diff --git a/datafiles/data/Tooltip/Node_MK_Brownian.png b/datafiles/data/Nodes/Tooltip/Node_MK_Brownian.png similarity index 100% rename from datafiles/data/Tooltip/Node_MK_Brownian.png rename to datafiles/data/Nodes/Tooltip/Node_MK_Brownian.png diff --git a/datafiles/data/Tooltip/Node_MK_Delay_Machine.png b/datafiles/data/Nodes/Tooltip/Node_MK_Delay_Machine.png similarity index 100% rename from datafiles/data/Tooltip/Node_MK_Delay_Machine.png rename to datafiles/data/Nodes/Tooltip/Node_MK_Delay_Machine.png diff --git a/datafiles/data/Tooltip/Node_MK_Fall.png b/datafiles/data/Nodes/Tooltip/Node_MK_Fall.png similarity index 100% rename from datafiles/data/Tooltip/Node_MK_Fall.png rename to datafiles/data/Nodes/Tooltip/Node_MK_Fall.png diff --git a/datafiles/data/Tooltip/Node_MK_Flag.png b/datafiles/data/Nodes/Tooltip/Node_MK_Flag.png similarity index 100% rename from datafiles/data/Tooltip/Node_MK_Flag.png rename to datafiles/data/Nodes/Tooltip/Node_MK_Flag.png diff --git a/datafiles/data/Tooltip/Node_MK_Flare.png b/datafiles/data/Nodes/Tooltip/Node_MK_Flare.png similarity index 100% rename from datafiles/data/Tooltip/Node_MK_Flare.png rename to datafiles/data/Nodes/Tooltip/Node_MK_Flare.png diff --git a/datafiles/data/Tooltip/Node_MK_Fracture.png b/datafiles/data/Nodes/Tooltip/Node_MK_Fracture.png similarity index 100% rename from datafiles/data/Tooltip/Node_MK_Fracture.png rename to datafiles/data/Nodes/Tooltip/Node_MK_Fracture.png diff --git a/datafiles/data/Tooltip/Node_MK_GridBalls.png b/datafiles/data/Nodes/Tooltip/Node_MK_GridBalls.png similarity index 100% rename from datafiles/data/Tooltip/Node_MK_GridBalls.png rename to datafiles/data/Nodes/Tooltip/Node_MK_GridBalls.png diff --git a/datafiles/data/Tooltip/Node_MK_GridFlip.png b/datafiles/data/Nodes/Tooltip/Node_MK_GridFlip.png similarity index 100% rename from datafiles/data/Tooltip/Node_MK_GridFlip.png rename to datafiles/data/Nodes/Tooltip/Node_MK_GridFlip.png diff --git a/datafiles/data/Tooltip/Node_MK_Rain.png b/datafiles/data/Nodes/Tooltip/Node_MK_Rain.png similarity index 100% rename from datafiles/data/Tooltip/Node_MK_Rain.png rename to datafiles/data/Nodes/Tooltip/Node_MK_Rain.png diff --git a/datafiles/data/Tooltip/Node_MK_Saber.png b/datafiles/data/Nodes/Tooltip/Node_MK_Saber.png similarity index 100% rename from datafiles/data/Tooltip/Node_MK_Saber.png rename to datafiles/data/Nodes/Tooltip/Node_MK_Saber.png diff --git a/datafiles/data/Tooltip/Node_MK_Tile.png b/datafiles/data/Nodes/Tooltip/Node_MK_Tile.png similarity index 100% rename from datafiles/data/Tooltip/Node_MK_Tile.png rename to datafiles/data/Nodes/Tooltip/Node_MK_Tile.png diff --git a/datafiles/data/Tooltip/Node_Mesh_Warp.png b/datafiles/data/Nodes/Tooltip/Node_Mesh_Warp.png similarity index 100% rename from datafiles/data/Tooltip/Node_Mesh_Warp.png rename to datafiles/data/Nodes/Tooltip/Node_Mesh_Warp.png diff --git a/datafiles/data/Tooltip/Node_Mirror.png b/datafiles/data/Nodes/Tooltip/Node_Mirror.png similarity index 100% rename from datafiles/data/Tooltip/Node_Mirror.png rename to datafiles/data/Nodes/Tooltip/Node_Mirror.png diff --git a/datafiles/data/Tooltip/Node_Morph_Surface.png b/datafiles/data/Nodes/Tooltip/Node_Morph_Surface.png similarity index 100% rename from datafiles/data/Tooltip/Node_Morph_Surface.png rename to datafiles/data/Nodes/Tooltip/Node_Morph_Surface.png diff --git a/datafiles/data/Tooltip/Node_Noise.png b/datafiles/data/Nodes/Tooltip/Node_Noise.png similarity index 100% rename from datafiles/data/Tooltip/Node_Noise.png rename to datafiles/data/Nodes/Tooltip/Node_Noise.png diff --git a/datafiles/data/Tooltip/Node_Noise_Aniso.png b/datafiles/data/Nodes/Tooltip/Node_Noise_Aniso.png similarity index 100% rename from datafiles/data/Tooltip/Node_Noise_Aniso.png rename to datafiles/data/Nodes/Tooltip/Node_Noise_Aniso.png diff --git a/datafiles/data/Tooltip/Node_Noise_Bubble.png b/datafiles/data/Nodes/Tooltip/Node_Noise_Bubble.png similarity index 100% rename from datafiles/data/Tooltip/Node_Noise_Bubble.png rename to datafiles/data/Nodes/Tooltip/Node_Noise_Bubble.png diff --git a/datafiles/data/Tooltip/Node_Noise_Cristal.png b/datafiles/data/Nodes/Tooltip/Node_Noise_Cristal.png similarity index 100% rename from datafiles/data/Tooltip/Node_Noise_Cristal.png rename to datafiles/data/Nodes/Tooltip/Node_Noise_Cristal.png diff --git a/datafiles/data/Tooltip/Node_Noise_Simplex.png b/datafiles/data/Nodes/Tooltip/Node_Noise_Simplex.png similarity index 100% rename from datafiles/data/Tooltip/Node_Noise_Simplex.png rename to datafiles/data/Nodes/Tooltip/Node_Noise_Simplex.png diff --git a/datafiles/data/Tooltip/Node_Noise_Strand.png b/datafiles/data/Nodes/Tooltip/Node_Noise_Strand.png similarity index 100% rename from datafiles/data/Tooltip/Node_Noise_Strand.png rename to datafiles/data/Nodes/Tooltip/Node_Noise_Strand.png diff --git a/datafiles/data/Tooltip/Node_Normal.png b/datafiles/data/Nodes/Tooltip/Node_Normal.png similarity index 100% rename from datafiles/data/Tooltip/Node_Normal.png rename to datafiles/data/Nodes/Tooltip/Node_Normal.png diff --git a/datafiles/data/Tooltip/Node_Normal_Light.png b/datafiles/data/Nodes/Tooltip/Node_Normal_Light.png similarity index 100% rename from datafiles/data/Tooltip/Node_Normal_Light.png rename to datafiles/data/Nodes/Tooltip/Node_Normal_Light.png diff --git a/datafiles/data/Tooltip/Node_Normalize.png b/datafiles/data/Nodes/Tooltip/Node_Normalize.png similarity index 100% rename from datafiles/data/Tooltip/Node_Normalize.png rename to datafiles/data/Nodes/Tooltip/Node_Normalize.png diff --git a/datafiles/data/Tooltip/Node_Outline.png b/datafiles/data/Nodes/Tooltip/Node_Outline.png similarity index 100% rename from datafiles/data/Tooltip/Node_Outline.png rename to datafiles/data/Nodes/Tooltip/Node_Outline.png diff --git a/datafiles/data/Tooltip/Node_Override_Channel.png b/datafiles/data/Nodes/Tooltip/Node_Override_Channel.png similarity index 100% rename from datafiles/data/Tooltip/Node_Override_Channel.png rename to datafiles/data/Nodes/Tooltip/Node_Override_Channel.png diff --git a/datafiles/data/Tooltip/Node_Padding.png b/datafiles/data/Nodes/Tooltip/Node_Padding.png similarity index 100% rename from datafiles/data/Tooltip/Node_Padding.png rename to datafiles/data/Nodes/Tooltip/Node_Padding.png diff --git a/datafiles/data/Tooltip/Node_Palette_Shift.png b/datafiles/data/Nodes/Tooltip/Node_Palette_Shift.png similarity index 100% rename from datafiles/data/Tooltip/Node_Palette_Shift.png rename to datafiles/data/Nodes/Tooltip/Node_Palette_Shift.png diff --git a/datafiles/data/Tooltip/Node_Particle.png b/datafiles/data/Nodes/Tooltip/Node_Particle.png similarity index 100% rename from datafiles/data/Tooltip/Node_Particle.png rename to datafiles/data/Nodes/Tooltip/Node_Particle.png diff --git a/datafiles/data/Tooltip/Node_Path_Profile.png b/datafiles/data/Nodes/Tooltip/Node_Path_Profile.png similarity index 100% rename from datafiles/data/Tooltip/Node_Path_Profile.png rename to datafiles/data/Nodes/Tooltip/Node_Path_Profile.png diff --git a/datafiles/data/Tooltip/Node_Perlin.png b/datafiles/data/Nodes/Tooltip/Node_Perlin.png similarity index 100% rename from datafiles/data/Tooltip/Node_Perlin.png rename to datafiles/data/Nodes/Tooltip/Node_Perlin.png diff --git a/datafiles/data/Tooltip/Node_Perlin_Extra.png b/datafiles/data/Nodes/Tooltip/Node_Perlin_Extra.png similarity index 100% rename from datafiles/data/Tooltip/Node_Perlin_Extra.png rename to datafiles/data/Nodes/Tooltip/Node_Perlin_Extra.png diff --git a/datafiles/data/Tooltip/Node_Pixel_Cloud.png b/datafiles/data/Nodes/Tooltip/Node_Pixel_Cloud.png similarity index 100% rename from datafiles/data/Tooltip/Node_Pixel_Cloud.png rename to datafiles/data/Nodes/Tooltip/Node_Pixel_Cloud.png diff --git a/datafiles/data/Tooltip/Node_Pixel_Sampler.png b/datafiles/data/Nodes/Tooltip/Node_Pixel_Sampler.png similarity index 100% rename from datafiles/data/Tooltip/Node_Pixel_Sampler.png rename to datafiles/data/Nodes/Tooltip/Node_Pixel_Sampler.png diff --git a/datafiles/data/Tooltip/Node_Pixel_Sort.png b/datafiles/data/Nodes/Tooltip/Node_Pixel_Sort.png similarity index 100% rename from datafiles/data/Tooltip/Node_Pixel_Sort.png rename to datafiles/data/Nodes/Tooltip/Node_Pixel_Sort.png diff --git a/datafiles/data/Tooltip/Node_Plot_Linear.png b/datafiles/data/Nodes/Tooltip/Node_Plot_Linear.png similarity index 100% rename from datafiles/data/Tooltip/Node_Plot_Linear.png rename to datafiles/data/Nodes/Tooltip/Node_Plot_Linear.png diff --git a/datafiles/data/Tooltip/Node_Polar.png b/datafiles/data/Nodes/Tooltip/Node_Polar.png similarity index 100% rename from datafiles/data/Tooltip/Node_Polar.png rename to datafiles/data/Nodes/Tooltip/Node_Polar.png diff --git a/datafiles/data/Tooltip/Node_Posterize.png b/datafiles/data/Nodes/Tooltip/Node_Posterize.png similarity index 100% rename from datafiles/data/Tooltip/Node_Posterize.png rename to datafiles/data/Nodes/Tooltip/Node_Posterize.png diff --git a/datafiles/data/Tooltip/Node_Pytagorean_Tile.png b/datafiles/data/Nodes/Tooltip/Node_Pytagorean_Tile.png similarity index 100% rename from datafiles/data/Tooltip/Node_Pytagorean_Tile.png rename to datafiles/data/Nodes/Tooltip/Node_Pytagorean_Tile.png diff --git a/datafiles/data/Tooltip/Node_Quasicrystal.png b/datafiles/data/Nodes/Tooltip/Node_Quasicrystal.png similarity index 100% rename from datafiles/data/Tooltip/Node_Quasicrystal.png rename to datafiles/data/Nodes/Tooltip/Node_Quasicrystal.png diff --git a/datafiles/data/Tooltip/Node_RD.png b/datafiles/data/Nodes/Tooltip/Node_RD.png similarity index 100% rename from datafiles/data/Tooltip/Node_RD.png rename to datafiles/data/Nodes/Tooltip/Node_RD.png diff --git a/datafiles/data/Tooltip/Node_RGB_Channel.png b/datafiles/data/Nodes/Tooltip/Node_RGB_Channel.png similarity index 100% rename from datafiles/data/Tooltip/Node_RGB_Channel.png rename to datafiles/data/Nodes/Tooltip/Node_RGB_Channel.png diff --git a/datafiles/data/Tooltip/Node_Random_Tile.png b/datafiles/data/Nodes/Tooltip/Node_Random_Tile.png similarity index 100% rename from datafiles/data/Tooltip/Node_Random_Tile.png rename to datafiles/data/Nodes/Tooltip/Node_Random_Tile.png diff --git a/datafiles/data/Tooltip/Node_Region_Fill.png b/datafiles/data/Nodes/Tooltip/Node_Region_Fill.png similarity index 100% rename from datafiles/data/Tooltip/Node_Region_Fill.png rename to datafiles/data/Nodes/Tooltip/Node_Region_Fill.png diff --git a/datafiles/data/Tooltip/Node_Render_Sprite_Sheet.png b/datafiles/data/Nodes/Tooltip/Node_Render_Sprite_Sheet.png similarity index 100% rename from datafiles/data/Tooltip/Node_Render_Sprite_Sheet.png rename to datafiles/data/Nodes/Tooltip/Node_Render_Sprite_Sheet.png diff --git a/datafiles/data/Tooltip/Node_Repeat.png b/datafiles/data/Nodes/Tooltip/Node_Repeat.png similarity index 100% rename from datafiles/data/Tooltip/Node_Repeat.png rename to datafiles/data/Nodes/Tooltip/Node_Repeat.png diff --git a/datafiles/data/Tooltip/Node_Repeat_Texture.png b/datafiles/data/Nodes/Tooltip/Node_Repeat_Texture.png similarity index 100% rename from datafiles/data/Tooltip/Node_Repeat_Texture.png rename to datafiles/data/Nodes/Tooltip/Node_Repeat_Texture.png diff --git a/datafiles/data/Tooltip/Node_Rigid_Group_Inline.png b/datafiles/data/Nodes/Tooltip/Node_Rigid_Group_Inline.png similarity index 100% rename from datafiles/data/Tooltip/Node_Rigid_Group_Inline.png rename to datafiles/data/Nodes/Tooltip/Node_Rigid_Group_Inline.png diff --git a/datafiles/data/Tooltip/Node_SDF.png b/datafiles/data/Nodes/Tooltip/Node_SDF.png similarity index 100% rename from datafiles/data/Tooltip/Node_SDF.png rename to datafiles/data/Nodes/Tooltip/Node_SDF.png diff --git a/datafiles/data/Tooltip/Node_Scale.png b/datafiles/data/Nodes/Tooltip/Node_Scale.png similarity index 100% rename from datafiles/data/Tooltip/Node_Scale.png rename to datafiles/data/Nodes/Tooltip/Node_Scale.png diff --git a/datafiles/data/Tooltip/Node_Scale_Algo.png b/datafiles/data/Nodes/Tooltip/Node_Scale_Algo.png similarity index 100% rename from datafiles/data/Tooltip/Node_Scale_Algo.png rename to datafiles/data/Nodes/Tooltip/Node_Scale_Algo.png diff --git a/datafiles/data/Tooltip/Node_Scatter.png b/datafiles/data/Nodes/Tooltip/Node_Scatter.png similarity index 100% rename from datafiles/data/Tooltip/Node_Scatter.png rename to datafiles/data/Nodes/Tooltip/Node_Scatter.png diff --git a/datafiles/data/Tooltip/Node_Sequence_Anim.png b/datafiles/data/Nodes/Tooltip/Node_Sequence_Anim.png similarity index 100% rename from datafiles/data/Tooltip/Node_Sequence_Anim.png rename to datafiles/data/Nodes/Tooltip/Node_Sequence_Anim.png diff --git a/datafiles/data/Tooltip/Node_Shadow.png b/datafiles/data/Nodes/Tooltip/Node_Shadow.png similarity index 100% rename from datafiles/data/Tooltip/Node_Shadow.png rename to datafiles/data/Nodes/Tooltip/Node_Shadow.png diff --git a/datafiles/data/Tooltip/Node_Shadow_Cast.png b/datafiles/data/Nodes/Tooltip/Node_Shadow_Cast.png similarity index 100% rename from datafiles/data/Tooltip/Node_Shadow_Cast.png rename to datafiles/data/Nodes/Tooltip/Node_Shadow_Cast.png diff --git a/datafiles/data/Tooltip/Node_Shape.png b/datafiles/data/Nodes/Tooltip/Node_Shape.png similarity index 100% rename from datafiles/data/Tooltip/Node_Shape.png rename to datafiles/data/Nodes/Tooltip/Node_Shape.png diff --git a/datafiles/data/Tooltip/Node_Shape_Map.png b/datafiles/data/Nodes/Tooltip/Node_Shape_Map.png similarity index 100% rename from datafiles/data/Tooltip/Node_Shape_Map.png rename to datafiles/data/Nodes/Tooltip/Node_Shape_Map.png diff --git a/datafiles/data/Tooltip/Node_Shape_Polygon.png b/datafiles/data/Nodes/Tooltip/Node_Shape_Polygon.png similarity index 100% rename from datafiles/data/Tooltip/Node_Shape_Polygon.png rename to datafiles/data/Nodes/Tooltip/Node_Shape_Polygon.png diff --git a/datafiles/data/Tooltip/Node_Shard_Noise.png b/datafiles/data/Nodes/Tooltip/Node_Shard_Noise.png similarity index 100% rename from datafiles/data/Tooltip/Node_Shard_Noise.png rename to datafiles/data/Nodes/Tooltip/Node_Shard_Noise.png diff --git a/datafiles/data/Tooltip/Node_Skew.png b/datafiles/data/Nodes/Tooltip/Node_Skew.png similarity index 100% rename from datafiles/data/Tooltip/Node_Skew.png rename to datafiles/data/Nodes/Tooltip/Node_Skew.png diff --git a/datafiles/data/Tooltip/Node_Smear.png b/datafiles/data/Nodes/Tooltip/Node_Smear.png similarity index 100% rename from datafiles/data/Tooltip/Node_Smear.png rename to datafiles/data/Nodes/Tooltip/Node_Smear.png diff --git a/datafiles/data/Tooltip/Node_Smoke_Group_Inline.png b/datafiles/data/Nodes/Tooltip/Node_Smoke_Group_Inline.png similarity index 100% rename from datafiles/data/Tooltip/Node_Smoke_Group_Inline.png rename to datafiles/data/Nodes/Tooltip/Node_Smoke_Group_Inline.png diff --git a/datafiles/data/Tooltip/Node_Solid.png b/datafiles/data/Nodes/Tooltip/Node_Solid.png similarity index 100% rename from datafiles/data/Tooltip/Node_Solid.png rename to datafiles/data/Nodes/Tooltip/Node_Solid.png diff --git a/datafiles/data/Tooltip/Node_Spherize.png b/datafiles/data/Nodes/Tooltip/Node_Spherize.png similarity index 100% rename from datafiles/data/Tooltip/Node_Spherize.png rename to datafiles/data/Nodes/Tooltip/Node_Spherize.png diff --git a/datafiles/data/Tooltip/Node_Sprite_Stack.png b/datafiles/data/Nodes/Tooltip/Node_Sprite_Stack.png similarity index 100% rename from datafiles/data/Tooltip/Node_Sprite_Stack.png rename to datafiles/data/Nodes/Tooltip/Node_Sprite_Stack.png diff --git a/datafiles/data/Tooltip/Node_Stack.png b/datafiles/data/Nodes/Tooltip/Node_Stack.png similarity index 100% rename from datafiles/data/Tooltip/Node_Stack.png rename to datafiles/data/Nodes/Tooltip/Node_Stack.png diff --git a/datafiles/data/Tooltip/Node_Strand_Group_Inline.png b/datafiles/data/Nodes/Tooltip/Node_Strand_Group_Inline.png similarity index 100% rename from datafiles/data/Tooltip/Node_Strand_Group_Inline.png rename to datafiles/data/Nodes/Tooltip/Node_Strand_Group_Inline.png diff --git a/datafiles/data/Tooltip/Node_Stripe.png b/datafiles/data/Nodes/Tooltip/Node_Stripe.png similarity index 100% rename from datafiles/data/Tooltip/Node_Stripe.png rename to datafiles/data/Nodes/Tooltip/Node_Stripe.png diff --git a/datafiles/data/Tooltip/Node_Text.png b/datafiles/data/Nodes/Tooltip/Node_Text.png similarity index 100% rename from datafiles/data/Tooltip/Node_Text.png rename to datafiles/data/Nodes/Tooltip/Node_Text.png diff --git a/datafiles/data/Tooltip/Node_Texture_Remap.png b/datafiles/data/Nodes/Tooltip/Node_Texture_Remap.png similarity index 100% rename from datafiles/data/Tooltip/Node_Texture_Remap.png rename to datafiles/data/Nodes/Tooltip/Node_Texture_Remap.png diff --git a/datafiles/data/Tooltip/Node_Threshold.png b/datafiles/data/Nodes/Tooltip/Node_Threshold.png similarity index 100% rename from datafiles/data/Tooltip/Node_Threshold.png rename to datafiles/data/Nodes/Tooltip/Node_Threshold.png diff --git a/datafiles/data/Tooltip/Node_Tile_Random.png b/datafiles/data/Nodes/Tooltip/Node_Tile_Random.png similarity index 100% rename from datafiles/data/Tooltip/Node_Tile_Random.png rename to datafiles/data/Nodes/Tooltip/Node_Tile_Random.png diff --git a/datafiles/data/Tooltip/Node_Time_Remap.png b/datafiles/data/Nodes/Tooltip/Node_Time_Remap.png similarity index 100% rename from datafiles/data/Tooltip/Node_Time_Remap.png rename to datafiles/data/Nodes/Tooltip/Node_Time_Remap.png diff --git a/datafiles/data/Tooltip/Node_Tonemap_ACE.png b/datafiles/data/Nodes/Tooltip/Node_Tonemap_ACE.png similarity index 100% rename from datafiles/data/Tooltip/Node_Tonemap_ACE.png rename to datafiles/data/Nodes/Tooltip/Node_Tonemap_ACE.png diff --git a/datafiles/data/Tooltip/Node_Trail.png b/datafiles/data/Nodes/Tooltip/Node_Trail.png similarity index 100% rename from datafiles/data/Tooltip/Node_Trail.png rename to datafiles/data/Nodes/Tooltip/Node_Trail.png diff --git a/datafiles/data/Tooltip/Node_Transform.png b/datafiles/data/Nodes/Tooltip/Node_Transform.png similarity index 100% rename from datafiles/data/Tooltip/Node_Transform.png rename to datafiles/data/Nodes/Tooltip/Node_Transform.png diff --git a/datafiles/data/Tooltip/Node_Twirl.png b/datafiles/data/Nodes/Tooltip/Node_Twirl.png similarity index 100% rename from datafiles/data/Tooltip/Node_Twirl.png rename to datafiles/data/Nodes/Tooltip/Node_Twirl.png diff --git a/datafiles/data/Tooltip/Node_VFX_Group_Inline.png b/datafiles/data/Nodes/Tooltip/Node_VFX_Group_Inline.png similarity index 100% rename from datafiles/data/Tooltip/Node_VFX_Group_Inline.png rename to datafiles/data/Nodes/Tooltip/Node_VFX_Group_Inline.png diff --git a/datafiles/data/Tooltip/Node_Vignette.png b/datafiles/data/Nodes/Tooltip/Node_Vignette.png similarity index 100% rename from datafiles/data/Tooltip/Node_Vignette.png rename to datafiles/data/Nodes/Tooltip/Node_Vignette.png diff --git a/datafiles/data/Tooltip/Node_Voronoi_Extra.png b/datafiles/data/Nodes/Tooltip/Node_Voronoi_Extra.png similarity index 100% rename from datafiles/data/Tooltip/Node_Voronoi_Extra.png rename to datafiles/data/Nodes/Tooltip/Node_Voronoi_Extra.png diff --git a/datafiles/data/Tooltip/Node_Warp.png b/datafiles/data/Nodes/Tooltip/Node_Warp.png similarity index 100% rename from datafiles/data/Tooltip/Node_Warp.png rename to datafiles/data/Nodes/Tooltip/Node_Warp.png diff --git a/datafiles/data/Tooltip/Node_Wavelet_Noise.png b/datafiles/data/Nodes/Tooltip/Node_Wavelet_Noise.png similarity index 100% rename from datafiles/data/Tooltip/Node_Wavelet_Noise.png rename to datafiles/data/Nodes/Tooltip/Node_Wavelet_Noise.png diff --git a/datafiles/data/Tooltip/Node_Zigzag.png b/datafiles/data/Nodes/Tooltip/Node_Zigzag.png similarity index 100% rename from datafiles/data/Tooltip/Node_Zigzag.png rename to datafiles/data/Nodes/Tooltip/Node_Zigzag.png diff --git a/datafiles/data/Nodes/display_data.json b/datafiles/data/Nodes/display_data.json new file mode 100644 index 000000000..51f229257 --- /dev/null +++ b/datafiles/data/Nodes/display_data.json @@ -0,0 +1,1023 @@ +{ + "list": [ + { + "name": "Home", + "nodes": [] + }, + { + "name": "Group", + "nodes": [ + { "label": "Groups" }, + "Node_Group_Input", + "Node_Group_Output", + "Node_Group_Thumbnail" + ], + "context": ["Node_Group"], + "color": "node_blend_collection" + }, + { + "name": "Loop", + "nodes": [ + { "label": "Groups" }, + "Node_Iterate", + "Node_Iterator_Input", + "Node_Iterator_Output", + "Node_Group_Input", + "Node_Group_Output", + "Node_Group_Thumbnail", + + { "label": "Loops" }, + "Node_Iterator_Index", + "Node_Iterator_Length" + ], + "context": ["Node_Iterate"], + "color": "node_blend_loop" + }, + { + "name": "Loop", + "nodes": [ + { "label": "Loops" }, + "Node_Iterator_Index", + "Node_Iterator_Each_Length" + ], + "context": ["Node_Iterate_Inline"], + "color": "node_blend_loop" + }, + { + "name": "Loop", + "nodes": [ + { "label": "Groups" }, + "Node_Group_Input", + "Node_Group_Output", + "Node_Group_Thumbnail", + + { "label": "Loops" }, + "Node_Iterator_Index", + "Node_Iterator_Each_Length" + ], + "context": ["Node_Iterate_Each"], + "color": "node_blend_loop" + }, + { + "name": "Loop", + "nodes": [ + { "label": "Loops" }, + "Node_Iterator_Index", + "Node_Iterator_Length" + ], + "context": ["Node_Iterate_Each_Inline"], + "color": "node_blend_loop" + }, + { + "name": "Filter", + "nodes": [ + { "label": "Groups" }, + "Node_Group_Input", + "Node_Group_Output", + "Node_Group_Thumbnail", + + { "label": "Loops" }, + "Node_Iterator_Index", + "Node_Iterator_Each_Length" + ], + "context": ["Node_Iterate_Filter"], + "color": "node_blend_loop" + }, + { + "name": "Filter", + "nodes": [ + { "label": "Loops" }, + "Node_Iterator_Index", + "Node_Iterator_Length" + ], + "context": ["Node_Iterate_Filter_Inline"], + "color": "node_blend_loop" + }, + { + "name": "Feedback", + "nodes": [ + { "label": "Groups" }, + "Node_Feedback_Input", + "Node_Feedback_Output", + "Node_Group_Thumbnail" + ], + "context": ["Node_Feedback"], + "color": "node_blend_feedback" + }, + { + "name": "VFX", + "nodes": [ + { "label": "Groups" }, + "Node_Group_Input", + "Node_Group_Output", + "Node_Group_Thumbnail", + + { "label": "Main" }, + "Node_VFX_Spawner", + "Node_VFX_Renderer", + + { "label": "Affectors" }, + "Node_VFX_Accelerate", + "Node_VFX_Destroy", + "Node_VFX_Attract", + "Node_VFX_Wind", + "Node_VFX_Vortex", + "Node_VFX_Turbulence", + "Node_VFX_Repel", + "Node_VFX_Oscillate", + "Node_VFX_Boids", + + { "label": "Generates" }, + "Node_VFX_Trail", + "Node_VFX_Triangulate", + + { "label": "Variables" }, + "Node_VFX_Variable", + "Node_VFX_Override" + ], + "context": ["Node_VFX_Group", "Node_VFX_Group_Inline"], + "color": "node_blend_vfx" + }, + { + "name": "RigidSim", + "nodes": [ + { "label": "Groups" }, + "Node_Group_Input", + "Node_Group_Output", + "Node_Rigid_Render_Output", + "Node_Rigid_Global", + + { "label": "RigidSim" }, + "Node_Rigid_Object", + "Node_Rigid_Object_Spawner", + "Node_Rigid_Wall", + "Node_Rigid_Render", + "Node_Rigid_Force_Apply", + "Node_Rigid_Activate", + + { "label": "Variables" }, + "Node_Rigid_Variable", + "Node_Rigid_Override" + ], + "context": ["Node_Rigid_Group", "Node_Rigid_Group_Inline"], + "color": "node_blend_simulation" + }, + { + "name": "SmokeSim", + "nodes": [ + { "label": "Groups" }, + "Node_Group_Input", + "Node_Group_Output", + "Node_Smoke_Render_Output", + + { "label": "Domain" }, + "Node_Smoke_Domain", + "Node_Smoke_Update", + "Node_Smoke_Render", + "Node_Smoke_Domain_Queue", + + { "label": "Smoke" }, + "Node_Smoke_Add", + "Node_Smoke_Apply_Velocity", + "Node_Smoke_Add_Collider", + "Node_Smoke_Vortex", + "Node_Smoke_Repulse", + "Node_Smoke_Turbulence" + ], + "context": ["Node_Smoke_Group", "Node_Smoke_Group_Inline"], + "color": "node_blend_smoke" + }, + { + "name": "FLIP Fluid", + "nodes": [ + { "label": "Domain" }, + "Node_FLIP_Domain", + "Node_FLIP_Render", + "Node_FLIP_Update", + + { "label": "Fluid" }, + "Node_FLIP_Spawner", + "Node_FLIP_Destroy", + + { "label": "Affectors" }, + "Node_FLIP_Apply_Velocity", + "Node_FLIP_Apply_Force", + "Node_FLIP_Repel", + "Node_FLIP_Vortex", + + { "label": "Misc" }, + "Node_FLIP_to_VFX" + ], + "context": ["Node_FLIP_Group_Inline"], + "color": "node_blend_fluid" + }, + { + "name": "StrandSim", + "nodes": [ + { "label": "Group" }, + "Node_Group_Input", + "Node_Group_Output", + + { "label": "System" }, + "Node_Strand_Create", + "Node_Strand_Update", + "Node_Strand_Render", + "Node_Strand_Render_Texture", + + { "label": "Affectors" }, + "Node_Strand_Gravity", + "Node_Strand_Force_Apply", + "Node_Strand_Break", + "Node_Strand_Length_Adjust", + "Node_Strand_Collision" + ], + "context": ["Node_Strand_Group", "Node_Strand_Group_Inline"], + "color": "node_blend_strand" + }, + + { + "name": "IO", + "nodes": [ + { "label": "Images" }, + { "label": "/Importers" }, + "Node_Image", + "Node_Image_gif", + "Node_Image_Sequence", + "Node_Image_Animated", + "Node_SVG", + { "label": "/Converters" }, + "Node_Image_Sheet", + "Node_Sequence_Anim", + "Node_Cache_Array", + + { "label": "Canvas" }, + "Node_Canvas", + "Node_Canvas_Group", + "Node_Active_Canvas", + + { "label": "Tileset" }, + { "label": "/Creators" }, + "Node_Tile_Tileset", + "Node_Tile_Drawer", + "Node_Tile_Rule", + "Node_Tile_Convert", + { "label": "/Exporters" }, + "Node_Tile_Render", + "Node_Tile_Tilemap_Export", + + { "label": "Files" }, + "Node_Text_File_Read", + "Node_Text_File_Write", + "Node_CSV_File_Read", + "Node_CSV_File_Write", + "Node_Json_File_Read", + "Node_Json_File_Write", + "Node_WAV_File_Read", + "Node_WAV_File_Write", + "Node_XML_File_Read", + "Node_XML_File_Write", + "Node_Byte_File_Read", + "Node_Byte_File_Write", + "Node_Directory_Search", + + { "label": "Aseprite" }, + "Node_ASE_File_Read", + "Node_ASE_layer", + "Node_ASE_Tag", + + { "label": "External" }, + "Node_Websocket_Receiver", + "Node_Websocket_Sender", + "Node_Spout_Send", + "Node_MIDI_In", + "Node_HTTP_request", + + { "label": "Gamemaker" }, + "Node_GMRoom" + ] + }, + { + "name": "Transform", + "nodes": [ + { "label": "Transforms" }, + "Node_Transform", + "Node_Scale", + "Node_Scale_Algo", + "Node_Flip", + "Node_Offset", + "Node_Mirror", + "Node_Mirror_Polar", + + { "label": "Crops" }, + "Node_Crop", + "Node_Crop_Content", + + { "label": "Warps" }, + "Node_Warp", + "Node_Skew", + "Node_Bend", + "Node_Mesh_Warp", + "Node_Polar", + "Node_Wrap_Area", + + { "label": "Others" }, + "Node_Composite", + "Node_9Slice", + "Node_Padding", + "Node_Tile_Random" + ] + }, + { + "name": "Filter", + "nodes": [ + { "label": "Combines" }, + "Node_Blend", + "Node_Combine_RGB", + "Node_Combine_HSV", + "Node_Override_Channel", + + { "label": "Blurs" }, + { "label": "/Kernel-based" }, + "Node_Blur", + "Node_Blur_Simple", + "Node_Blur_Contrast", + "Node_Blur_Box", + "Node_Blur_Shape", + "Node_High_Pass", + { "label": "/Linear" }, + "Node_Blur_Directional", + "Node_Blur_Slope", + "Node_Blur_Zoom", + "Node_Blur_Radial", + "Node_Blur_Path", + "Node_Smear", + { "label": "/Non-Linear" }, + "Node_Blur_Bokeh", + "Node_Average", + "Node_Kuwahara", + "Node_Brush_Linear", + + { "label": "Warps" }, + { "label": "/Effects" }, + "Node_Mirror", + "Node_Mirror_Polar", + "Node_Dilate", + "Node_Spherize", + "Node_Displace", + "Node_Morph_Surface", + "Node_Liquefy", + { "label": "/Mappers" }, + "Node_Texture_Remap", + "Node_Time_Remap", + "Node_Shape_Map", + + { "label": "Effects" }, + { "label": "/Basics" }, + "Node_Outline", + "Node_Glow", + "Node_Shadow", + "Node_Blobify", + "Node_SDF", + "Node_Surface_Replace", + { "label": "/Post Processing" }, + "Node_Bloom", + "Node_Blend_Edge", + "Node_Chromatic_Aberration", + "Node_Vignette", + "Node_JPEG", + "Node_Grain", + { "label": "/Convolutions" }, + "Node_Convolution", + "Node_Edge_Detect", + "Node_Local_Analyze", + "Node_Erode", + "Node_Corner", + { "label": "/Pixel Operations" }, + "Node_Pixel_Math", + "Node_Atlas", + "Node_Pixel_Cloud", + "Node_Pixel_Sort", + "Node_Shuffle", + { "label": "/Lights" }, + "Node_2D_light", + "Node_Shadow_Cast", + { "label": "/Animations" }, + "Node_Interlaced", + "Node_Trail", + + { "label": "Colors" }, + { "label": "/Replacements" }, + "Node_Color_replace", + "Node_Colors_Replace", + "Node_Color_Remove", + "Node_Color_Separate", + { "label": "/Colorizers" }, + "Node_Colorize", + "Node_Posterize", + "Node_Dither", + "Node_Dither_Diffuse", + "Node_Palette_Shift", + { "label": "/Conversions" }, + "Node_BW", + "Node_Greyscale", + "Node_RGB_Channel", + "Node_HSV_Channel", + "Node_Alpha_Grey", + "Node_Grey_Alpha", + { "label": "/Adjustments" }, + "Node_Color_adjust", + "Node_Level", + "Node_Level_Selector", + "Node_Curve", + "Node_Curve_HSV", + "Node_Invert", + "Node_Threshold", + "Node_Alpha_Cutoff", + "Node_Normalize", + "Node_Gamma_Map", + "Node_Tonemap_ACE", + + { "label": "Fixes" }, + "Node_De_Corner", + "Node_De_Stray" + ] + }, + { + "name": "3D", + "nodes": [ + { "label": "2D Operations" }, + "Node_3D_Transform_Image", + "Node_Normal", + "Node_Normal_Light", + "Node_Bevel", + "Node_Sprite_Stack", + "Node_Ambient_Occlusion", + + { "label": "Scenes" }, + "Node_3D_Camera", + "Node_3D_Camera_Set", + "Node_3D_Scene", + + { "label": "Materials" }, + "Node_3D_Material", + + { "label": "Meshes" }, + { "label": "/Creators" }, + "Node_3D_Mesh_Obj", + "Node_3D_Mesh_Plane", + "Node_3D_Mesh_Cube", + "Node_3D_Mesh_Cylinder", + "Node_3D_Mesh_Sphere_UV", + "Node_3D_Mesh_Sphere_Ico", + "Node_3D_Mesh_Cone", + "Node_3D_Mesh_Torus", + "Node_3D_Mesh_Terrain", + "Node_3D_Mesh_Wall_Builder", + "Node_3D_Mesh_Extrude", + "Node_3D_Mesh_Path_Extrude", + { "label": "/Exporters" }, + "Node_3D_Mesh_Export", + "Node_3D_Mesh_Stack_Slice", + + { "label": "Light" }, + "Node_3D_Light_Directional", + "Node_3D_Light_Point", + + { "label": "Modify" }, + { "label": "/Meshes" }, + "Node_3D_Transform", + "Node_3D_Transform_Scene", + "Node_3D_Round_Vertex", + "Node_3D_Displace", + "Node_3D_Subdivide", + { "label": "/Instances" }, + "Node_3D_Repeat", + { "label": "/Materials" }, + "Node_3D_Set_Material", + "Node_3D_UV_Remap", + + { "label": "Points" }, + "Node_3D_Point_Affector", + + { "label": "Ray Marching" }, + "Node_RM_Primitive", + "Node_RM_Combine", + "Node_RM_Render", + "Node_RM_Terrain", + "Node_RM_Cloud" + ] + }, + { + "name": "Generate", + "nodes": [ + { "label": "Colors" }, + "Node_Solid", + "Node_Gradient", + "Node_Gradient_Points", + "Node_Sky", + + { "label": "Drawer" }, + "Node_Line", + "Node_Text", + "Node_Shape", + "Node_Shape_Polygon", + "Node_Random_Shape", + "Node_Plot_Linear", + "Node_Path_Profile", + "Node_Cross_Section", + "Node_Interpret_Number", + "Node_Pixel_Builder", + "Node_Tile_Drawer", + + { "label": "Noises" }, + { "label": "/Basics" }, + "Node_Noise", + "Node_Perlin", + "Node_Noise_Simplex", + "Node_Cellular", + "Node_Noise_Aniso", + "Node_Perlin_Extra", + "Node_Voronoi_Extra", + { "label": "/Artistics" }, + "Node_Fold_Noise", + "Node_Noise_Strand", + "Node_Gabor_Noise", + "Node_Shard_Noise", + "Node_Wavelet_Noise", + "Node_Caustic", + "Node_Noise_Bubble", + "Node_Flow_Noise", + "Node_Noise_Cristal", + "Node_Honeycomb_Noise", + + { "label": "Patterns" }, + { "label": "/Basics" }, + "Node_Stripe", + "Node_Zigzag", + "Node_Checker", + { "label": "/Grids" }, + "Node_Grid", + "Node_Grid_Tri", + "Node_Grid_Hex", + "Node_Grid_Pentagonal", + { "label": "/Tiles" }, + "Node_Pytagorean_Tile", + "Node_Herringbone_Tile", + "Node_Random_Tile", + { "label": "/Others" }, + "Node_Box_Pattern", + "Node_Quasicrystal", + "Node_Pixel_Sampler", + "Node_Julia_Set", + + { "label": "Populate" }, + "Node_Repeat", + "Node_Scatter", + "Node_Repeat_Texture", + + { "label": "Simulation" }, + "Node_Particle", + "Node_VFX_Group_Inline", + "Node_Rigid_Group_Inline", + "Node_FLIP_Group_Inline", + "Node_Smoke_Group_Inline", + "Node_Strand_Group_Inline", + "Node_Diffuse", + "Node_RD", + + { "label": "Region" }, + "Node_Seperate_Shape", + "Node_Region_Fill", + "Node_Flood_Fill", + + { "label": "MK Effects" }, + "Node_MK_Rain", + "Node_MK_GridBalls", + "Node_MK_GridFlip", + "Node_MK_Saber", + "Node_MK_Tile", + "Node_MK_Flag", + "Node_MK_Brownian", + "Node_MK_Fall", + "Node_MK_Blinker", + "Node_MK_Flare", + "Node_MK_Delay_Machine", + "Node_MK_Fracture", + "Node_MK_Sparkle", + "Node_MK_Subpixel" + ] + }, + { + "name": "Compose", + "nodes": [ + { "label": "Composes" }, + "Node_Blend", + "Node_Composite", + "Node_Stack", + "Node_Image_Grid", + "Node_Camera", + "Node_Render_Sprite_Sheet", + "Node_Pack_Sprites", + + { "label": "Armature" }, + { "label": "/Basics" }, + "Node_Armature", + "Node_Armature_Pose", + "Node_Armature_Bind", + "Node_Armature_Mesh_Rig", + { "label": "/Convertors" }, + "Node_Armature_Path", + "Node_Armature_Sample", + + { "label": "Export" }, + "Node_Export" + ] + }, + { + "name": "Values", + "nodes": [ + { "label": "Raw data" }, + "Node_Number", + "Node_Boolean", + "Node_String", + "Node_Path", + "Node_Area", + + { "label": "Numbers" }, + { "label": "/Creators" }, + "Node_Number", + "Node_To_Number", + "Node_Random", + "Node_Scatter_Points", + "Node_Transform_Array", + { "label": "/Operators" }, + "Node_Math", + "Node_Equation", + "Node_Statistic", + "Node_Base_Convert", + "Node_FFT", + + { "label": "Vector" }, + { "label": "/Creators" }, + "Node_Vector2", + "Node_Vector3", + "Node_Vector4", + { "label": "/Components" }, + "Node_Vector_Split", + "Node_Vector_Swizzle", + { "label": "/Operators" }, + "Node_Vector_Magnitude", + "Node_Vector_Dot", + "Node_Vector_Cross_2D", + "Node_Vector_Cross_3D", + { "label": "/Points" }, + "Node_Move_Point", + "Node_Point_In_Area", + + { "label": "Texts" }, + { "label": "/Creators" }, + "Node_String", + "Node_To_Text", + "Node_Unicode", + { "label": "/Info" }, + "Node_String_Length", + "Node_String_Get_Char", + { "label": "/Operators" }, + "Node_String_Merge", + "Node_String_Join", + "Node_String_Split", + "Node_String_Trim", + { "label": "/RegEx" }, + "Node_String_Regex_Match", + "Node_String_Regex_Search", + "Node_String_Regex_Replace", + { "label": "/Filename" }, + "Node_Path_Separate_Folder", + + { "label": "Arrays" }, + { "label": "/Creators" }, + "Node_Array", + "Node_Array_Range", + "Node_Array_CSV_Parse", + { "label": "/Info" }, + "Node_Array_Length", + "Node_Array_Get", + "Node_Array_Sample", + "Node_Array_Find", + { "label": "/Operators" }, + "Node_Array_Set", + "Node_Array_Add", + "Node_Array_Split", + "Node_Array_Insert", + "Node_Array_Remove", + "Node_Array_Reverse", + "Node_Array_Shift", + "Node_Array_Rearrange", + "Node_Array_Zip", + "Node_Array_Copy", + "Node_Array_Convolute", + "Node_Array_Composite", + "Node_Array_Shuffle", + { "label": "/Group Operators" }, + "Node_Array_Sort", + "Node_Iterate_Each_Inline", + "Node_Iterate_Filter_Inline", + "Node_Iterate_Sort_Inline", + + { "label": "Paths" }, + { "label": "/Creators" }, + "Node_Path", + "Node_Path_Smooth", + "Node_Path_Shape", + "Node_Path_Builder", + "Node_Path_L_System", + "Node_Path_From_Mask", + "Node_Path_Plot", + "Node_Path_3D", + "Node_Path_Anchor", + { "label": "/Modifiers" }, + "Node_Path_Transform", + "Node_Path_Map_Area", + "Node_Path_Shift", + "Node_Path_Trim", + "Node_Path_Wave", + "Node_Path_Array", + "Node_Path_Reverse", + { "label": "/Combine" }, + "Node_Path_Repeat", + "Node_Path_Scatter", + "Node_Path_Bridge", + "Node_Path_Blend", + { "label": "/To Number" }, + "Node_Path_Sample", + "Node_Path_Bake", + { "label": "/To Surface" }, + "Node_Path_Fill", + "Node_Path_Map", + "Node_Path_Morph", + { "label": "/Segments" }, + "Node_Segment_Filter", + + { "label": "Boolean" }, + "Node_Boolean", + "Node_Compare", + "Node_Logic", + + { "label": "Trigger" }, + "Node_Trigger", + "Node_Trigger_Bool", + + { "label": "Struct" }, + "Node_Struct", + "Node_Struct_Get", + "Node_Struct_Set", + "Node_Struct_JSON_Parse", + + { "label": "Mesh" }, + "Node_Mesh_Create_Path", + "Node_Mesh_Transform", + + { "label": "Atlas" }, + "Node_Atlas_Draw", + "Node_Atlas_Get", + "Node_Atlas_Set", + "Node_Atlas_Struct", + + { "label": "Surface" }, + "Node_Surface_data", + "Node_IsoSurf", + "Node_Surface_From_Buffer", + + { "label": "Buffer" }, + "Node_Surface_To_Buffer" + ] + }, + { + "name": "Color", + "nodes": [ + { "label": "Colors" }, + { "label": "/Creators" }, + "Node_Color", + "Node_Color_RGB", + "Node_Color_HSV", + "Node_Color_OKLCH", + { "label": "/Data" }, + "Node_Color_Data", + { "label": "/Operators" }, + "Node_Color_Mix", + { "label": "/Surfaces" }, + "Node_Sampler", + "Node_Find_Pixel", + + { "label": "Palettes" }, + "Node_Palette", + "Node_Palette_Sort", + "Node_Palette_Shrink", + "Node_Palette_Extract", + "Node_Palette_Replace", + + { "label": "Gradient" }, + "Node_Gradient_Out", + "Node_Gradient_Palette", + "Node_Gradient_Shift", + "Node_Gradient_Replace_Color", + "Node_Gradient_Extract", + "Node_Gradient_Sample" + ] + }, + { + "name": "Animation", + "nodes": [ + { "label": "Animations" }, + "Node_Counter", + "Node_Rate_Remap", + "Node_Delay", + "Node_Stagger", + "Node_Revert", + + { "label": "Value" }, + "Node_Anim_Curve", + "Node_Fn_WaveTable", + "Node_Wiggler", + "Node_Fn_Ease", + "Node_Fn_Math", + "Node_Fn_SmoothStep", + + { "label": "Audio" }, + { "label": "/Files" }, + "Node_WAV_File_Read", + "Node_WAV_File_Write", + { "label": "/Analyzers" }, + "Node_Audio_Window", + "Node_Audio_Loudness", + "Node_FFT", + { "label": "/Renders" }, + "Node_Plot_Linear" + ] + }, + { + "name": "Misc", + "nodes": [ + { "label": "Control" }, + "Node_Condition", + "Node_Switch", + "Node_Animation_Control", + + { "label": "Groups" }, + "Node_Group", + "Node_Feedback", + "Node_Iterate", + "Node_Iterate_Each_Inline", + "Node_Iterate_Filter_Inline", + + { "label": "Lua" }, + "Node_Lua_Global", + "Node_Lua_Surface", + "Node_Lua_Compute", + + { "label": "Shader" }, + "Node_HLSL", + + { "label": "Organize" }, + "Node_Pin", + "Node_Array_Pin", + "Node_Frame", + "Node_Tunnel_In", + "Node_Tunnel_Out", + "Node_Display_Text", + "Node_Display_Image", + + { "label": "Cache" }, + "Node_Cache", + "Node_Cache_Array", + + { "label": "Debug" }, + "Node_Print", + "Node_Widget_Test", + "Node_Graph_Preview", + "Node_Slideshow", + + { "label": "Project" }, + "Node_Project_Data", + + { "label": "System" }, + "Node_Argument", + "Node_Terminal_Trigger", + "Node_Shell", + "Node_Monitor_Capture", + "Node_Application_In", + "Node_Application_Out", + "Node_Assert" + ] + } + ], + "pb": [ + { + "name": "Group", + "nodes": [ + "Node_Group_Input", + "Node_Group_Output" + ] + }, + { + "name": "Draw", + "nodes": [ + { "label": "Fill" }, + "Node_PB_Draw_Fill", + + { "label": "Shape" }, + "Node_PB_Draw_Rectangle", + "Node_PB_Draw_Round_Rectangle", + "Node_PB_Draw_Trapezoid", + "Node_PB_Draw_Diamond", + "Node_PB_Draw_Ellipse", + "Node_PB_Draw_Semi_Ellipse", + "Node_PB_Draw_Line", + "Node_PB_Draw_Angle", + "Node_PB_Draw_Blob" + ] + }, + { + "name": "Box", + "nodes": [ + { "label": "Layer" }, + "Node_PB_Layer", + + { "label": "Box" }, + "Node_PB_Box_Transform", + "Node_PB_Box_Mirror", + "Node_PB_Box_Inset", + "Node_PB_Box_Split", + "Node_PB_Box_Divide", + "Node_PB_Box_Divide_Grid", + "Node_PB_Box_Contract" + ] + }, + { + "name": "Effects", + "nodes": [ + { "label": "Effect" }, + "Node_PB_Fx_Outline", + "Node_PB_Fx_Stack", + "Node_PB_Fx_Radial", + + { "label": "Lighting" }, + "Node_PB_Fx_Highlight", + "Node_PB_Fx_Shading", + + { "label": "Texture" }, + "Node_PB_Fx_Hash", + "Node_PB_Fx_Strip", + "Node_PB_Fx_Brick", + + { "label": "Blend" }, + "Node_PB_Fx_Add", + "Node_PB_Fx_Subtract", + "Node_PB_Fx_Intersect" + ] + }, + { + "name": "Array", + "nodes": [ + "Node_Array", + "Node_Array_Get", + "Node_Array_Set", + "Node_Array_Insert", + "Node_Array_Remove" + ] + } + ], + "pcx": [ + { + "name": "Variable", + "nodes": [ + "Node_PCX_var", + "Node_PCX_fn_var" + ] + }, + { + "name": "Functions", + "nodes": [ + "Node_PCX_Equation", + + { "label": "Numbers" }, + "Node_PCX_fn_Math", + "Node_PCX_fn_Random", + + { "label": "Surface" }, + "Node_PCX_fn_Surface_Width", + "Node_PCX_fn_Surface_Height", + + { "label": "Array" }, + "Node_PCX_Array_Get", + "Node_PCX_Array_Set" + ] + }, + { + "name": "Flow Control", + "nodes": [ + "Node_PCX_Condition" + ] + } + ] +} \ No newline at end of file diff --git a/datafiles/data/Nodes/generator.ipynb b/datafiles/data/Nodes/generator.ipynb deleted file mode 100644 index 709d82cff..000000000 --- a/datafiles/data/Nodes/generator.ipynb +++ /dev/null @@ -1,18 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "language_info": { - "name": "python" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/datafiles/data/related_node.json b/datafiles/data/Nodes/related_node.json similarity index 100% rename from datafiles/data/related_node.json rename to datafiles/data/Nodes/related_node.json diff --git a/datafiles/data/nodes.json b/datafiles/data/nodes.json deleted file mode 100644 index 7ac93aee3..000000000 --- a/datafiles/data/nodes.json +++ /dev/null @@ -1 +0,0 @@ -{"Zigzag":{"node":"Node_Zigzag","outputs":[{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":3,"visible":0},{"type":3,"visible":0},{"type":2,"visible":0}]},"Path plot":{"node":"Node_Path_Plot","outputs":[{"type":12,"visible":1}],"inputs":[{"type":1,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":7,"visible":0},{"type":7,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}]},"Zoom Blur":{"node":"Node_Blur_Zoom","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":4,"visible":1},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Unicode":{"node":"Node_Unicode","outputs":[{"type":7,"visible":1}],"inputs":[{"type":0,"visible":0}]},"Boolean":{"node":"Node_Boolean","outputs":[{"type":2,"visible":1}],"inputs":[{"type":2,"visible":1}]},"Array Insert":{"node":"Node_Array_Insert","outputs":[{"type":11,"visible":1}],"inputs":[{"type":11,"visible":1},{"type":0,"visible":0},{"type":11,"visible":1},{"type":2,"visible":0}]},"4 Points Gradient":{"node":"Node_Gradient_Points","outputs":[{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":1,"visible":0},{"type":3,"visible":0},{"type":1,"visible":0},{"type":3,"visible":0},{"type":1,"visible":0},{"type":3,"visible":0},{"type":1,"visible":0},{"type":3,"visible":0},{"type":2,"visible":0},{"type":3,"visible":0}]},"Dot product":{"node":"Node_Vector_Dot","outputs":[{"type":1,"visible":1}],"inputs":[{"type":1,"visible":1},{"type":1,"visible":1}]},"Activate Physics":{"node":"Node_Rigid_Activate","outputs":[{"type":14,"visible":1}],"inputs":[{"type":14,"visible":1},{"type":2,"visible":0}]},"Number":{"node":"Node_Number","outputs":[{"type":1,"visible":1}],"inputs":[{"type":1,"visible":1},{"type":2,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}]},"Attract":{"node":"Node_VFX_Attract","outputs":[{"type":13,"visible":1}],"inputs":[{"type":13,"visible":1},{"type":1,"visible":0},{"type":6,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}]},"Polar":{"node":"Node_Polar","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Twirl":{"node":"Node_Twirl","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"RGB Color":{"node":"Node_Color_RGB","outputs":[{"type":3,"visible":1}],"inputs":[{"type":1,"visible":1},{"type":1,"visible":1},{"type":1,"visible":1},{"type":2,"visible":0}]},"Cast Shadow":{"node":"Node_Shadow_Cast","outputs":[{"type":4,"visible":1},{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":4,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":3,"visible":0},{"type":3,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0},{"type":2,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0}]},"3D Object":{"node":"Node_3D_Obj","outputs":[{"type":4,"visible":1},{"type":10,"visible":1},{"type":4,"visible":1}],"inputs":[{"type":5,"visible":1},{"type":19,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":3,"visible":0},{"type":3,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0}]},"Cache":{"node":"Node_Cache","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1}]},"Atlas Get":{"node":"Node_Atlas_Get","outputs":[{"type":4,"visible":1},{"type":1,"visible":1},{"type":1,"visible":1},{"type":1,"visible":1},{"type":3,"visible":1},{"type":1,"visible":1}],"inputs":[{"type":20,"visible":1}]},"Normal Light":{"node":"Node_Normal_Light","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":4,"visible":1},{"type":1,"visible":0},{"type":3,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":3,"visible":0},{"type":0,"visible":0},{"type":2,"visible":0}]},"CSV File Out":{"node":"Node_CSV_File_Write","outputs":[],"inputs":[{"type":5,"visible":1},{"type":11,"visible":0}]},"Palette to Gradient":{"node":"Node_Gradient_Palette","outputs":[{"type":22,"visible":1}],"inputs":[{"type":3,"visible":1},{"type":2,"visible":0},{"type":1,"visible":1},{"type":0,"visible":0}]},"Text File In":{"node":"Node_Text_File_Read","outputs":[{"type":7,"visible":1},{"type":5,"visible":1}],"inputs":[{"type":5,"visible":1}]},"Cellular Noise":{"node":"Node_Cellular","outputs":[{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0}]},"VFX Override":{"node":"Node_VFX_Override","outputs":[{"type":13,"visible":1}],"inputs":[{"type":13,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":3,"visible":0},{"type":1,"visible":0},{"type":4,"visible":0}]},"ASE File In":{"node":"Node_ASE_File_Read","outputs":[{"type":4,"visible":1},{"type":8,"visible":1},{"type":5,"visible":1},{"type":3,"visible":1}],"inputs":[{"type":5,"visible":1},{"type":19,"visible":0},{"type":7,"visible":0}]},"Average":{"node":"Node_Average","outputs":[{"type":4,"visible":1},{"type":3,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Sort Array":{"node":"Node_Iterate_Sort","outputs":[{"type":11,"visible":1}],"inputs":[{"type":11,"visible":1}]},"Repeat":{"node":"Node_Repeat","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":6,"visible":0},{"type":12,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":22,"visible":0},{"type":6,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":6,"visible":0},{"type":0,"visible":0},{"type":3,"visible":0},{"type":1,"visible":0}]},"Render":{"node":"Node_Rigid_Render","outputs":[{"type":4,"visible":1}],"inputs":[{"type":1,"visible":0},{"type":14,"visible":1}]},"Apply Velocity":{"node":"Node_Fluid_Apply_Velocity","outputs":[{"type":15,"visible":1}],"inputs":[{"type":15,"visible":1},{"type":4,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0}]},"Hexagonal Noise":{"node":"Node_Noise_Hex","outputs":[{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":4,"visible":1},{"type":0,"visible":0}]},"Strand Render Texture":{"node":"Node_Strand_Render_Texture","outputs":[{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":17,"visible":1},{"type":1,"visible":0},{"type":22,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0}]},"Tunnel Out":{"node":"Node_Tunnel_Out","outputs":[{"type":11,"visible":1}],"inputs":[{"type":7,"visible":0}]},"Padding":{"node":"Node_Padding","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":0,"visible":0},{"type":3,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0}]},"Feedback":{"node":"Node_Feedback","outputs":[],"inputs":[]},"Add Fluid":{"node":"Node_Fluid_Add","outputs":[{"type":15,"visible":1}],"inputs":[{"type":15,"visible":1},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}]},"Array Copy":{"node":"Node_Array_Copy","outputs":[{"type":11,"visible":1}],"inputs":[{"type":11,"visible":1},{"type":0,"visible":0},{"type":0,"visible":0}]},"Text Length":{"node":"Node_String_Length","outputs":[{"type":7,"visible":1}],"inputs":[{"type":7,"visible":1},{"type":0,"visible":0}]},"Sample Path":{"node":"Node_Path_Sample","outputs":[{"type":1,"visible":1},{"type":1,"visible":1}],"inputs":[{"type":12,"visible":1},{"type":1,"visible":0},{"type":0,"visible":0}]},"Websocket Sender":{"node":"Node_Websocket_Sender","outputs":[],"inputs":[{"type":0,"visible":0},{"type":0,"visible":0},{"type":16,"visible":0},{"type":4,"visible":1},{"type":5,"visible":1},{"type":7,"visible":0}]},"Crop Content":{"node":"Node_Crop_Content","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":2,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0}]},"Composite":{"node":"Node_Composite","outputs":[{"type":4,"visible":1},{"type":20,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}]},"Strand Render":{"node":"Node_Strand_Render","outputs":[{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":17,"visible":1},{"type":1,"visible":0},{"type":6,"visible":0},{"type":22,"visible":0},{"type":22,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}]},"WAV File In":{"node":"Node_WAV_File_Read","outputs":[{"type":1,"visible":1},{"type":5,"visible":1},{"type":0,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}],"inputs":[{"type":5,"visible":1},{"type":0,"visible":0}]},"Strand Update":{"node":"Node_Strand_Update","outputs":[{"type":17,"visible":1}],"inputs":[{"type":17,"visible":1},{"type":0,"visible":0}]},"Flip":{"node":"Node_Flip","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":2,"visible":0}]},"Wave Path":{"node":"Node_Path_Wave","outputs":[{"type":12,"visible":1}],"inputs":[{"type":12,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0}]},"3D Cone":{"node":"Node_3D_Cone","outputs":[{"type":4,"visible":1},{"type":10,"visible":1},{"type":4,"visible":1},{"type":21,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":3,"visible":0},{"type":3,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":4,"visible":1},{"type":4,"visible":1},{"type":2,"visible":0}]},"Erode":{"node":"Node_Erode","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":2,"visible":0},{"type":2,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Image GIF":{"node":"Node_Image_gif","outputs":[{"type":4,"visible":1},{"type":5,"visible":1}],"inputs":[{"type":5,"visible":1},{"type":19,"visible":0}]},"Path Builder":{"node":"Node_Path_Builder","outputs":[{"type":12,"visible":1}],"inputs":[{"type":1,"visible":1},{"type":2,"visible":0}]},"Crop":{"node":"Node_Crop","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":2,"visible":0}]},"Equation":{"node":"Node_Equation","outputs":[{"type":1,"visible":1}],"inputs":[{"type":7,"visible":0},{"type":7,"visible":0},{"type":1,"visible":1}]},"Wind":{"node":"Node_VFX_Wind","outputs":[{"type":13,"visible":1}],"inputs":[{"type":13,"visible":1},{"type":1,"visible":0},{"type":6,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}]},"Tunnel In":{"node":"Node_Tunnel_In","outputs":[],"inputs":[{"type":7,"visible":0},{"type":11,"visible":1}]},"HSV Extract":{"node":"Node_HSV_Channel","outputs":[{"type":4,"visible":1},{"type":4,"visible":1},{"type":4,"visible":1},{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1}]},"Array Add":{"node":"Node_Array_Add","outputs":[{"type":0,"visible":1}],"inputs":[{"type":11,"visible":1},{"type":2,"visible":0},{"type":11,"visible":1}]},"Draw Atlas":{"node":"Node_Atlas_Draw","outputs":[{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":20,"visible":1}]},"Array Set":{"node":"Node_Array_Set","outputs":[{"type":11,"visible":1}],"inputs":[{"type":11,"visible":1},{"type":0,"visible":0},{"type":11,"visible":1}]},"Bar \/ Graph":{"node":"Node_Plot_Linear","outputs":[{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":1,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":3,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0},{"type":3,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":22,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0},{"type":12,"visible":1},{"type":2,"visible":0},{"type":2,"visible":0},{"type":1,"visible":0}]},"Shuffle Array":{"node":"Node_Array_Shuffle","outputs":[{"type":11,"visible":1}],"inputs":[{"type":11,"visible":1},{"type":0,"visible":0}]},"Scatter Points":{"node":"Node_Scatter_Points","outputs":[{"type":1,"visible":1}],"inputs":[{"type":1,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0}]},"Grid":{"node":"Node_Grid","outputs":[{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":22,"visible":0},{"type":3,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0}]},"Image Array":{"node":"Node_Image_Sequence","outputs":[{"type":4,"visible":1},{"type":5,"visible":1}],"inputs":[{"type":5,"visible":1},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0}]},"Gradient Data":{"node":"Node_Gradient_Extract","outputs":[{"type":3,"visible":1},{"type":1,"visible":1},{"type":0,"visible":1}],"inputs":[{"type":22,"visible":1}]},"Pixel Sort":{"node":"Node_Pixel_Sort","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Bevel":{"node":"Node_Bevel","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0}]},"Output":{"node":"Node_Group_Output","outputs":[],"inputs":[{"type":11,"visible":1},{"type":0,"visible":0}]},"Colorize":{"node":"Node_Colorize","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":22,"visible":0},{"type":1,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0},{"type":2,"visible":0}]},"Split Text":{"node":"Node_String_Split","outputs":[{"type":7,"visible":1}],"inputs":[{"type":7,"visible":1},{"type":7,"visible":0}]},"SDF":{"node":"Node_SDF","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":2,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0}]},"Find pixel":{"node":"Node_Find_Pixel","outputs":[{"type":0,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":3,"visible":0}]},"Logic Opr":{"node":"Node_Logic","outputs":[{"type":2,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":2,"visible":1},{"type":2,"visible":1}]},"Flood Fill":{"node":"Node_Flood_Fill","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0},{"type":1,"visible":0},{"type":3,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0}]},"FFT":{"node":"Node_FFT","outputs":[{"type":1,"visible":1}],"inputs":[{"type":1,"visible":1},{"type":0,"visible":0}]},"Evaluate Curve":{"node":"Node_Anim_Curve","outputs":[{"type":1,"visible":1}],"inputs":[{"type":6,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}]},"Wiggler":{"node":"Node_Wiggler","outputs":[{"type":1,"visible":1}],"inputs":[{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0}]},"WAV File Out":{"node":"Node_WAV_File_Write","outputs":[],"inputs":[{"type":5,"visible":1},{"type":1,"visible":1},{"type":0,"visible":0},{"type":0,"visible":0},{"type":2,"visible":0},{"type":1,"visible":0}]},"Vector4":{"node":"Node_Vector4","outputs":[{"type":1,"visible":1}],"inputs":[{"type":1,"visible":1},{"type":1,"visible":1},{"type":1,"visible":1},{"type":1,"visible":1},{"type":2,"visible":0}]},"Fluid Domain":{"node":"Node_Fluid_Domain","outputs":[{"type":15,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":4,"visible":1},{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0},{"type":2,"visible":0}]},"Morph Surface":{"node":"Node_Morph_Surface","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":4,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0}]},"Color":{"node":"Node_Color","outputs":[{"type":3,"visible":1}],"inputs":[{"type":3,"visible":0}]},"Translate Point":{"node":"Node_Move_Point","outputs":[{"type":1,"visible":1}],"inputs":[{"type":1,"visible":1},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}]},"3D Cylinder":{"node":"Node_3D_Cylinder","outputs":[{"type":4,"visible":1},{"type":10,"visible":1},{"type":4,"visible":1},{"type":21,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":4,"visible":1},{"type":4,"visible":1},{"type":4,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":3,"visible":0},{"type":3,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0}]},"Audio Window":{"node":"Node_Audio_Window","outputs":[{"type":1,"visible":1}],"inputs":[{"type":1,"visible":1},{"type":0,"visible":0},{"type":0,"visible":0}]},"Array Length":{"node":"Node_Array_Length","outputs":[{"type":0,"visible":1}],"inputs":[{"type":11,"visible":1}]},"Camera":{"node":"Node_Camera","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":2,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0}]},"Triangular Noise":{"node":"Node_Noise_Tri","outputs":[{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":4,"visible":1},{"type":0,"visible":0}]},"Pack Sprites":{"node":"Node_Pack_Sprites","outputs":[{"type":4,"visible":1},{"type":20,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0}]},"Animation Control":{"node":"Node_Animation_Control","outputs":[],"inputs":[{"type":19,"visible":0},{"type":19,"visible":0},{"type":19,"visible":0},{"type":19,"visible":0},{"type":19,"visible":0},{"type":19,"visible":0},{"type":0,"visible":0}]},"Sort Number":{"node":"Node_Array_Sort","outputs":[{"type":11,"visible":1},{"type":0,"visible":1}],"inputs":[{"type":11,"visible":1},{"type":0,"visible":0}]},"Perlin Noise":{"node":"Node_Perlin","outputs":[{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":2,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}]},"2D Light":{"node":"Node_2D_light","outputs":[{"type":4,"visible":1},{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":3,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0}]},"Image":{"node":"Node_Image","outputs":[{"type":4,"visible":1},{"type":5,"visible":1}],"inputs":[{"type":5,"visible":1},{"type":0,"visible":0}]},"Remove Color":{"node":"Node_Color_Remove","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":3,"visible":0},{"type":1,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0},{"type":2,"visible":0}]},"Array Get":{"node":"Node_Array_Get","outputs":[{"type":11,"visible":1}],"inputs":[{"type":11,"visible":1},{"type":0,"visible":1},{"type":0,"visible":0}]},"Loop":{"node":"Node_Iterate","outputs":[],"inputs":[{"type":0,"visible":0}]},"Draw Gradient":{"node":"Node_Gradient","outputs":[{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":22,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0}]},"Sort Output":{"node":"Node_Iterator_Sort_Output","outputs":[],"inputs":[{"type":2,"visible":1}]},"Loop amount":{"node":"Node_Iterator_Length","outputs":[{"type":0,"visible":1}],"inputs":[]},"Gradient Shift":{"node":"Node_Gradient_Shift","outputs":[{"type":22,"visible":1}],"inputs":[{"type":22,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0},{"type":1,"visible":0}]},"Stripe":{"node":"Node_Stripe","outputs":[{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0},{"type":22,"visible":0},{"type":3,"visible":0},{"type":3,"visible":0}]},"Vector3":{"node":"Node_Vector3","outputs":[{"type":1,"visible":1}],"inputs":[{"type":1,"visible":1},{"type":1,"visible":1},{"type":1,"visible":1},{"type":2,"visible":0}]},"Pixel Expand":{"node":"Node_Atlas","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":2,"visible":0}]},"Path Array":{"node":"Node_Path_Array","outputs":[{"type":12,"visible":1}],"inputs":[{"type":12,"visible":1}]},"RigidSim Global":{"node":"Node_Rigid_Global","outputs":[],"inputs":[{"type":1,"visible":0}]},"Export":{"node":"Node_Export","outputs":[{"type":11,"visible":1},{"type":4,"visible":0}],"inputs":[{"type":4,"visible":1},{"type":5,"visible":1},{"type":7,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":2,"visible":0},{"type":2,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0}]},"Cross product 3D":{"node":"Node_Vector_Cross_3D","outputs":[{"type":1,"visible":1}],"inputs":[{"type":1,"visible":1},{"type":1,"visible":1}]},"Update Domain":{"node":"Node_Fluid_Update","outputs":[{"type":15,"visible":1}],"inputs":[{"type":15,"visible":1},{"type":2,"visible":0}]},"3D Export":{"node":"Node_3D_Export","outputs":[],"inputs":[{"type":21,"visible":1},{"type":5,"visible":1},{"type":2,"visible":0}]},"Group":{"node":"Node_Group","outputs":[],"inputs":[]},"Condition":{"node":"Node_Condition","outputs":[{"type":11,"visible":1},{"type":2,"visible":1}],"inputs":[{"type":1,"visible":1},{"type":0,"visible":0},{"type":1,"visible":0},{"type":11,"visible":1},{"type":11,"visible":1},{"type":0,"visible":0},{"type":2,"visible":1},{"type":7,"visible":0},{"type":7,"visible":0}]},"Mix Color":{"node":"Node_Color_Mix","outputs":[{"type":3,"visible":1}],"inputs":[{"type":3,"visible":0},{"type":3,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0}]},"Destroy":{"node":"Node_VFX_Destroy","outputs":[{"type":13,"visible":1}],"inputs":[{"type":13,"visible":1},{"type":1,"visible":0},{"type":6,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}]},"Line":{"node":"Node_Line","outputs":[{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":12,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":22,"visible":0},{"type":6,"visible":0},{"type":2,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0},{"type":2,"visible":0},{"type":2,"visible":0},{"type":2,"visible":0},{"type":4,"visible":1},{"type":2,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}]},"Gradient Replace":{"node":"Node_Gradient_Replace_Color","outputs":[{"type":22,"visible":1}],"inputs":[{"type":22,"visible":1},{"type":3,"visible":0},{"type":3,"visible":0},{"type":1,"visible":0}]},"Struct Get":{"node":"Node_Struct_Get","outputs":[{"type":16,"visible":1}],"inputs":[{"type":16,"visible":1},{"type":7,"visible":0}]},"3D Displace":{"node":"Node_3D_Displace","outputs":[{"type":4,"visible":1},{"type":10,"visible":1},{"type":4,"visible":1},{"type":21,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":3,"visible":0},{"type":3,"visible":0},{"type":21,"visible":1},{"type":0,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0}]},"Threshold":{"node":"Node_Threshold","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Blend":{"node":"Node_Blend","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":4,"visible":1},{"type":0,"visible":0},{"type":1,"visible":0},{"type":4,"visible":1},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":2,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0}]},"Trim Path":{"node":"Node_Path_Trim","outputs":[{"type":12,"visible":1}],"inputs":[{"type":12,"visible":1},{"type":1,"visible":0}]},"Array Range":{"node":"Node_Array_Range","outputs":[{"type":1,"visible":1}],"inputs":[{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}]},"Sort Palette":{"node":"Node_Palette_Sort","outputs":[{"type":3,"visible":1}],"inputs":[{"type":3,"visible":1},{"type":0,"visible":0},{"type":2,"visible":0}]},"Separate Shape":{"node":"Node_Seperate_Shape","outputs":[{"type":4,"visible":1},{"type":0,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0},{"type":3,"visible":0},{"type":2,"visible":0}]},"Sort Input":{"node":"Node_Iterator_Sort_Input","outputs":[{"type":11,"visible":1}],"inputs":[{"type":11,"visible":0}]},"Gradient":{"node":"Node_Gradient_Out","outputs":[{"type":22,"visible":1},{"type":3,"visible":1}],"inputs":[{"type":22,"visible":0},{"type":1,"visible":0}]},"3D Cube":{"node":"Node_3D_Cube","outputs":[{"type":4,"visible":1},{"type":10,"visible":1},{"type":4,"visible":1},{"type":21,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0},{"type":4,"visible":1},{"type":4,"visible":1},{"type":4,"visible":1},{"type":4,"visible":1},{"type":4,"visible":1},{"type":4,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":3,"visible":0},{"type":3,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0}]},"Local Analyze":{"node":"Node_Local_Analyze","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Sprite Stack":{"node":"Node_Sprite_Stack","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":3,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0}]},"Alpha Cutoff":{"node":"Node_Alpha_Cutoff","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"L system":{"node":"Node_Path_L_System","outputs":[{"type":12,"visible":1}],"inputs":[{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":7,"visible":0},{"type":7,"visible":0},{"type":0,"visible":0},{"type":7,"visible":0},{"type":7,"visible":0}]},"Stack":{"node":"Node_Stack","outputs":[{"type":4,"visible":1},{"type":20,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":4,"visible":1}]},"Greyscale":{"node":"Node_Greyscale","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Array Reverse":{"node":"Node_Array_Reverse","outputs":[{"type":11,"visible":1}],"inputs":[{"type":11,"visible":1}]},"Convert Base":{"node":"Node_Base_Convert","outputs":[{"type":7,"visible":1}],"inputs":[{"type":7,"visible":1},{"type":0,"visible":0},{"type":0,"visible":0}]},"Replace Color":{"node":"Node_Color_replace","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":3,"visible":0},{"type":3,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0},{"type":2,"visible":0},{"type":2,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Chromatic Aberration":{"node":"Node_Chromatic_Aberration","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0}]},"Loop Array":{"node":"Node_Iterate_Each","outputs":[{"type":11,"visible":1}],"inputs":[{"type":11,"visible":1}]},"Blur":{"node":"Node_Blur","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":0,"visible":0},{"type":2,"visible":0},{"type":3,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"FXAA":{"node":"Node_FXAA","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1}]},"Pixel Cloud":{"node":"Node_Pixel_Cloud","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":1,"visible":0},{"type":4,"visible":1},{"type":22,"visible":0},{"type":1,"visible":0},{"type":6,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0}]},"Get Character":{"node":"Node_String_Get_Char","outputs":[{"type":7,"visible":1}],"inputs":[{"type":7,"visible":1},{"type":0,"visible":0},{"type":0,"visible":0}]},"Nine Slice":{"node":"Node_9Slice","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0}]},"Color Adjust":{"node":"Node_Color_adjust","outputs":[{"type":4,"visible":1},{"type":3,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":3,"visible":0},{"type":1,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0},{"type":3,"visible":1}]},"3D Combine":{"node":"Node_3D_Combine","outputs":[{"type":4,"visible":1},{"type":10,"visible":1},{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":3,"visible":0},{"type":3,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0},{"type":10,"visible":1}]},"HSV Color":{"node":"Node_Color_HSV","outputs":[{"type":3,"visible":1}],"inputs":[{"type":1,"visible":1},{"type":1,"visible":1},{"type":1,"visible":1},{"type":2,"visible":0}]},"3D Repeat":{"node":"Node_3D_Repeat","outputs":[{"type":4,"visible":1},{"type":10,"visible":1},{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":3,"visible":0},{"type":3,"visible":0},{"type":10,"visible":1},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0}]},"Path to Mesh":{"node":"Node_Mesh_Create_Path","outputs":[{"type":18,"visible":1}],"inputs":[{"type":12,"visible":1},{"type":0,"visible":0},{"type":0,"visible":0}]},"Index":{"node":"Node_Iterator_Index","outputs":[{"type":0,"visible":1}],"inputs":[]},"Join Text":{"node":"Node_String_Join","outputs":[{"type":7,"visible":1}],"inputs":[{"type":7,"visible":1},{"type":7,"visible":0}]},"Bloom":{"node":"Node_Bloom","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":4,"visible":1},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"RigidSim":{"node":"Node_Rigid_Group","outputs":[],"inputs":[]},"Pin":{"node":"Node_Pin","outputs":[{"type":11,"visible":1}],"inputs":[{"type":11,"visible":1}]},"Render Spritesheet":{"node":"Node_Render_Sprite_Sheet","outputs":[{"type":4,"visible":1},{"type":16,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0}]},"Trigger":{"node":"Node_Trigger","outputs":[{"type":19,"visible":1}],"inputs":[{"type":19,"visible":0},{"type":19,"visible":0}]},"Mesh Transform":{"node":"Node_Mesh_Transform","outputs":[{"type":18,"visible":1}],"inputs":[{"type":18,"visible":1},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}]},"Switch":{"node":"Node_Switch","outputs":[{"type":11,"visible":1}],"inputs":[{"type":7,"visible":1},{"type":11,"visible":1},{"type":7,"visible":0},{"type":11,"visible":1}]},"Time Remap":{"node":"Node_Time_Remap","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":4,"visible":1},{"type":0,"visible":0},{"type":2,"visible":0}]},"Palette":{"node":"Node_Palette","outputs":[{"type":3,"visible":1}],"inputs":[{"type":3,"visible":0},{"type":1,"visible":0}]},"3D Extrude":{"node":"Node_3D_Extrude","outputs":[{"type":4,"visible":1},{"type":10,"visible":1},{"type":4,"visible":1},{"type":21,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":19,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":3,"visible":0},{"type":3,"visible":0},{"type":4,"visible":1},{"type":2,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0}]},"Path Anchor":{"node":"Node_Path_Anchor","outputs":[{"type":1,"visible":1}],"inputs":[{"type":1,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0}]},"Cross product 2D":{"node":"Node_Vector_Cross_2D","outputs":[{"type":1,"visible":1}],"inputs":[{"type":1,"visible":1},{"type":1,"visible":1}]},"3D Plane":{"node":"Node_3D_Plane","outputs":[{"type":4,"visible":1},{"type":10,"visible":1},{"type":21,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0}]},"JSON File In":{"node":"Node_Json_File_Read","outputs":[{"type":5,"visible":1},{"type":16,"visible":1},{"type":1,"visible":1}],"inputs":[{"type":5,"visible":1},{"type":7,"visible":1}]},"Filter Array":{"node":"Node_Iterate_Filter","outputs":[{"type":11,"visible":1}],"inputs":[{"type":11,"visible":1}]},"Lua Compute":{"node":"Node_Lua_Compute","outputs":[{"type":9,"visible":1},{"type":4,"visible":1}],"inputs":[{"type":7,"visible":0},{"type":0,"visible":0},{"type":7,"visible":0},{"type":9,"visible":1},{"type":2,"visible":0},{"type":7,"visible":0},{"type":0,"visible":0},{"type":1,"visible":1}]},"De-Corner":{"node":"Node_De_Corner","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":2,"visible":0},{"type":1,"visible":0}]},"Array to Anim":{"node":"Node_Sequence_Anim","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0}]},"Anisotropic Noise":{"node":"Node_Noise_Aniso","outputs":[{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}]},"Strand Break":{"node":"Node_Strand_Break","outputs":[{"type":17,"visible":1}],"inputs":[{"type":17,"visible":1},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0}]},"Polygon Shape":{"node":"Node_Shape_Polygon","outputs":[{"type":4,"visible":1},{"type":18,"visible":1},{"type":12,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":2,"visible":0},{"type":3,"visible":0},{"type":3,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0},{"type":18,"visible":1}]},"Transform Path":{"node":"Node_Path_Transform","outputs":[{"type":12,"visible":1}],"inputs":[{"type":12,"visible":1},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}]},"De-Stray":{"node":"Node_De_Stray","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Lens Blur":{"node":"Node_Blur_Bokeh","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Transform":{"node":"Node_Transform","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":2,"visible":0},{"type":2,"visible":0}]},"Shift Path":{"node":"Node_Path_Shift","outputs":[{"type":12,"visible":1}],"inputs":[{"type":12,"visible":1},{"type":1,"visible":0}]},"Scale Algorithm":{"node":"Node_Scale_Algo","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0}]},"Mesh Warp":{"node":"Node_Mesh_Warp","outputs":[{"type":4,"visible":1},{"type":8,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":1,"visible":0},{"type":19,"visible":0},{"type":2,"visible":0},{"type":2,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0}]},"Frame":{"node":"Node_Frame","outputs":[],"inputs":[{"type":0,"visible":0},{"type":3,"visible":0},{"type":1,"visible":0}]},"Blend Path":{"node":"Node_Path_Blend","outputs":[{"type":12,"visible":1}],"inputs":[{"type":12,"visible":1},{"type":12,"visible":1},{"type":1,"visible":0}]},"Outline":{"node":"Node_Outline","outputs":[{"type":4,"visible":1},{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":3,"visible":0},{"type":2,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Websocket Receiver":{"node":"Node_Websocket_Receiver","outputs":[{"type":16,"visible":1},{"type":19,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":2,"visible":0}]},"Repulse":{"node":"Node_Fluid_Repulse","outputs":[{"type":15,"visible":1}],"inputs":[{"type":15,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0}]},"Replace Image":{"node":"Node_Surface_Replace","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":4,"visible":1},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0},{"type":2,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0}]},"Cache Array":{"node":"Node_Cache_Array","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0}]},"RegEx Match":{"node":"Node_String_Regex_Match","outputs":[{"type":2,"visible":1}],"inputs":[{"type":7,"visible":1},{"type":7,"visible":0}]},"RegEx Replace":{"node":"Node_String_Regex_Replace","outputs":[{"type":7,"visible":1}],"inputs":[{"type":7,"visible":1},{"type":7,"visible":0},{"type":7,"visible":0}]},"Random":{"node":"Node_Random","outputs":[{"type":1,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}]},"RGBA Extract":{"node":"Node_RGB_Channel","outputs":[{"type":4,"visible":1},{"type":4,"visible":1},{"type":4,"visible":1},{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0}]},"Array":{"node":"Node_Array","outputs":[{"type":11,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":2,"visible":0},{"type":11,"visible":1}]},"Simple Blur":{"node":"Node_Blur_Simple","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":0,"visible":0},{"type":4,"visible":1},{"type":2,"visible":0},{"type":3,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"StrandSim":{"node":"Node_Strand_Group","outputs":[],"inputs":[]},"3D Transform":{"node":"Node_3D_Transform","outputs":[{"type":4,"visible":1},{"type":10,"visible":1},{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":3,"visible":0},{"type":3,"visible":0},{"type":10,"visible":1},{"type":0,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0}]},"Color Data":{"node":"Node_Color_Data","outputs":[{"type":1,"visible":1},{"type":1,"visible":1},{"type":1,"visible":1},{"type":1,"visible":1},{"type":1,"visible":1},{"type":1,"visible":1},{"type":1,"visible":1}],"inputs":[{"type":3,"visible":1},{"type":2,"visible":0}]},"FluidSim":{"node":"Node_Fluid_Group","outputs":[],"inputs":[]},"Simplex Noise":{"node":"Node_Noise_Simplex","outputs":[{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}]},"BW":{"node":"Node_BW","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Level Selector":{"node":"Node_Level_Selector","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Add Collider":{"node":"Node_Fluid_Add_Collider","outputs":[{"type":15,"visible":1}],"inputs":[{"type":15,"visible":1},{"type":4,"visible":1},{"type":1,"visible":0}]},"Rigidbody Override":{"node":"Node_Rigid_Override","outputs":[{"type":14,"visible":1}],"inputs":[{"type":14,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":3,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}]},"Compare":{"node":"Node_Compare","outputs":[{"type":2,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":1,"visible":1},{"type":1,"visible":1}]},"Text":{"node":"Node_String","outputs":[{"type":7,"visible":1}],"inputs":[{"type":7,"visible":0}]},"Canvas":{"node":"Node_Canvas","outputs":[{"type":4,"visible":1},{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":3,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":2,"visible":0},{"type":4,"visible":1},{"type":0,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Sampler":{"node":"Node_Sampler","outputs":[{"type":3,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":0,"visible":0}]},"Shadow":{"node":"Node_Shadow","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":3,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Grey to Alpha":{"node":"Node_Grey_Alpha","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":2,"visible":0},{"type":3,"visible":0},{"type":2,"visible":0}]},"Strand Collision":{"node":"Node_Strand_Collision","outputs":[{"type":17,"visible":1}],"inputs":[{"type":17,"visible":1},{"type":18,"visible":1}]},"Apply Force":{"node":"Node_Rigid_Force_Apply","outputs":[{"type":14,"visible":1}],"inputs":[{"type":14,"visible":1},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}]},"Area Warp":{"node":"Node_Wrap_Area","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"ASE Layer":{"node":"Node_ASE_layer","outputs":[{"type":4,"visible":1}],"inputs":[{"type":8,"visible":1},{"type":2,"visible":0}]},"Noise":{"node":"Node_Noise","outputs":[{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}]},"Solid":{"node":"Node_Solid","outputs":[{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":3,"visible":0},{"type":2,"visible":0},{"type":4,"visible":1},{"type":2,"visible":0}]},"Mirror":{"node":"Node_Mirror","outputs":[{"type":4,"visible":1},{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":0,"visible":0},{"type":2,"visible":0}]},"HSV Combine":{"node":"Node_Combine_HSV","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":4,"visible":1},{"type":4,"visible":1}]},"Renderer":{"node":"Node_VFX_Renderer","outputs":[{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0},{"type":13,"visible":1}]},"Combine Text":{"node":"Node_String_Merge","outputs":[{"type":7,"visible":1}],"inputs":[{"type":7,"visible":0},{"type":7,"visible":0}]},"JSON File Out":{"node":"Node_Json_File_Write","outputs":[],"inputs":[{"type":5,"visible":1},{"type":16,"visible":1},{"type":7,"visible":0},{"type":11,"visible":0}]},"Remap Path":{"node":"Node_Path_Map_Area","outputs":[{"type":12,"visible":1}],"inputs":[{"type":12,"visible":1},{"type":0,"visible":0}]},"Vector2":{"node":"Node_Vector2","outputs":[{"type":1,"visible":1}],"inputs":[{"type":1,"visible":1},{"type":1,"visible":1},{"type":2,"visible":0},{"type":0,"visible":0},{"type":19,"visible":0}]},"Turbulence":{"node":"Node_VFX_Turbulence","outputs":[{"type":13,"visible":1}],"inputs":[{"type":13,"visible":1},{"type":1,"visible":0},{"type":6,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}]},"Level":{"node":"Node_Level","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Lua Global":{"node":"Node_Lua_Global","outputs":[{"type":9,"visible":1}],"inputs":[{"type":7,"visible":0},{"type":0,"visible":0},{"type":9,"visible":1}]},"Array Find":{"node":"Node_Array_Find","outputs":[{"type":0,"visible":1}],"inputs":[{"type":11,"visible":1},{"type":11,"visible":1}]},"Directional Blur":{"node":"Node_Blur_Directional","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":0,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Displace":{"node":"Node_Displace","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":4,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Texture Remap":{"node":"Node_Texture_Remap","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":4,"visible":1},{"type":2,"visible":0}]},"Scatter":{"node":"Node_Scatter","outputs":[{"type":4,"visible":1},{"type":20,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":2,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":22,"visible":0},{"type":1,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":0,"visible":0},{"type":2,"visible":0},{"type":7,"visible":0},{"type":0,"visible":0},{"type":12,"visible":0}]},"Grid Noise":{"node":"Node_Grid_Noise","outputs":[{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":4,"visible":1},{"type":0,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}]},"Warp":{"node":"Node_Warp","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0}]},"Queue Domain":{"node":"Node_Fluid_Domain_Queue","outputs":[{"type":15,"visible":1}],"inputs":[{"type":15,"visible":1}]},"Invert":{"node":"Node_Invert","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Convolution":{"node":"Node_Convolution","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":0,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Contrast Blur":{"node":"Node_Blur_Contrast","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"VFX Variable":{"node":"Node_VFX_Variable","outputs":[{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":3,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":4,"visible":0},{"type":1,"visible":0}],"inputs":[{"type":13,"visible":1}]},"Curve":{"node":"Node_Curve","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":6,"visible":0},{"type":6,"visible":0},{"type":6,"visible":0},{"type":6,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Particle":{"node":"Node_Particle","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":6,"visible":0},{"type":22,"visible":0},{"type":1,"visible":0},{"type":6,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":0,"visible":1},{"type":0,"visible":0},{"type":2,"visible":0},{"type":22,"visible":0},{"type":2,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0}]},"Vortex":{"node":"Node_Fluid_Vortex","outputs":[{"type":15,"visible":1},{"type":4,"visible":1}],"inputs":[{"type":15,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0}]},"Glow":{"node":"Node_Glow","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":3,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Array Zip":{"node":"Node_Array_Zip","outputs":[{"type":0,"visible":1}],"inputs":[{"type":11,"visible":1},{"type":11,"visible":1}]},"Repel":{"node":"Node_VFX_Repel","outputs":[{"type":13,"visible":1}],"inputs":[{"type":13,"visible":1},{"type":1,"visible":0},{"type":6,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}]},"Draw Text":{"node":"Node_Text","outputs":[{"type":4,"visible":1}],"inputs":[{"type":7,"visible":1},{"type":5,"visible":1},{"type":0,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0},{"type":3,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0}]},"Edge Detect":{"node":"Node_Edge_Detect","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":0,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Reverse Path":{"node":"Node_Path_Reverse","outputs":[{"type":12,"visible":1}],"inputs":[{"type":12,"visible":1}]},"Scale":{"node":"Node_Scale","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0}]},"Hexagonal Grid":{"node":"Node_Grid_Hex","outputs":[{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":22,"visible":0},{"type":3,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":4,"visible":1}]},"Palette Replace":{"node":"Node_Palette_Replace","outputs":[{"type":3,"visible":1}],"inputs":[{"type":3,"visible":1},{"type":3,"visible":0},{"type":3,"visible":0},{"type":1,"visible":0}]},"Array Remove":{"node":"Node_Array_Remove","outputs":[{"type":11,"visible":1}],"inputs":[{"type":11,"visible":1},{"type":0,"visible":0},{"type":0,"visible":0},{"type":11,"visible":1},{"type":2,"visible":0}]},"Radial Blur":{"node":"Node_Blur_Radial","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Object":{"node":"Node_Rigid_Object","outputs":[{"type":14,"visible":1}],"inputs":[{"type":2,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0},{"type":19,"visible":0},{"type":1,"visible":0}]},"Input":{"node":"Node_Iterator_Filter_Input","outputs":[{"type":11,"visible":1}],"inputs":[]},"Struct":{"node":"Node_Struct","outputs":[{"type":16,"visible":1}],"inputs":[{"type":7,"visible":0},{"type":11,"visible":0}]},"Strand Create":{"node":"Node_Strand_Create","outputs":[{"type":17,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":12,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":18,"visible":0},{"type":0,"visible":0},{"type":19,"visible":0},{"type":2,"visible":0},{"type":1,"visible":0}]},"CSV File In":{"node":"Node_CSV_File_Read","outputs":[{"type":7,"visible":1},{"type":5,"visible":1}],"inputs":[{"type":5,"visible":1},{"type":2,"visible":0}]},"Accelerate":{"node":"Node_VFX_Accelerate","outputs":[{"type":13,"visible":1}],"inputs":[{"type":13,"visible":1},{"type":1,"visible":0},{"type":6,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}]},"Atlas Set":{"node":"Node_Atlas_Set","outputs":[{"type":20,"visible":1}],"inputs":[{"type":20,"visible":1},{"type":4,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":3,"visible":0},{"type":1,"visible":0}]},"Path":{"node":"Node_Path","outputs":[{"type":1,"visible":1},{"type":12,"visible":1},{"type":1,"visible":1}],"inputs":[{"type":1,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0},{"type":2,"visible":0}]},"Array Shift":{"node":"Node_Array_Shift","outputs":[{"type":11,"visible":1}],"inputs":[{"type":11,"visible":1},{"type":0,"visible":0}]},"Strand Gravity":{"node":"Node_Strand_Gravity","outputs":[{"type":17,"visible":1}],"inputs":[{"type":17,"visible":1},{"type":1,"visible":0},{"type":0,"visible":0}]},"RegEx Search":{"node":"Node_String_Regex_Search","outputs":[{"type":7,"visible":1}],"inputs":[{"type":7,"visible":1},{"type":7,"visible":0}]},"Trail":{"node":"Node_Trail","outputs":[{"type":4,"visible":1},{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0},{"type":2,"visible":0},{"type":2,"visible":0},{"type":6,"visible":0}]},"Alpha to Grey":{"node":"Node_Alpha_Grey","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":2,"visible":0}]},"Rigidbody Variable":{"node":"Node_Rigid_Variable","outputs":[{"type":1,"visible":1},{"type":1,"visible":1},{"type":1,"visible":1},{"type":3,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}],"inputs":[{"type":14,"visible":1}]},"Animation":{"node":"Node_Image_Animated","outputs":[{"type":4,"visible":1}],"inputs":[{"type":5,"visible":1},{"type":0,"visible":0},{"type":2,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":19,"visible":0}]},"Checker":{"node":"Node_Checker","outputs":[{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":3,"visible":0},{"type":3,"visible":0}]},"Triangular Grid":{"node":"Node_Grid_Tri","outputs":[{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":22,"visible":0},{"type":3,"visible":0},{"type":4,"visible":1},{"type":0,"visible":0},{"type":1,"visible":0}]},"Render Domain":{"node":"Node_Fluid_Render","outputs":[{"type":4,"visible":1},{"type":4,"visible":1}],"inputs":[{"type":15,"visible":1},{"type":0,"visible":0},{"type":2,"visible":0},{"type":2,"visible":0}]},"Posterize":{"node":"Node_Posterize","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":3,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0}]},"Text File Out":{"node":"Node_Text_File_Write","outputs":[],"inputs":[{"type":5,"visible":1},{"type":7,"visible":1}]},"Math":{"node":"Node_Math","outputs":[{"type":1,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":1,"visible":1},{"type":1,"visible":1},{"type":2,"visible":0},{"type":2,"visible":0},{"type":1,"visible":0}]},"Strand Force Apply":{"node":"Node_Strand_Force_Apply","outputs":[{"type":17,"visible":1}],"inputs":[{"type":17,"visible":1},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0}]},"3D Sphere":{"node":"Node_3D_Sphere","outputs":[{"type":4,"visible":1},{"type":10,"visible":1},{"type":4,"visible":1},{"type":21,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":3,"visible":0},{"type":3,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0}]},"Boolean Trigger":{"node":"Node_Trigger_Bool","outputs":[{"type":19,"visible":1}],"inputs":[{"type":2,"visible":0},{"type":0,"visible":0}]},"Area":{"node":"Node_Area","outputs":[{"type":1,"visible":1}],"inputs":[{"type":1,"visible":1},{"type":1,"visible":1},{"type":1,"visible":0}]},"Trim Text":{"node":"Node_String_Trim","outputs":[{"type":7,"visible":1}],"inputs":[{"type":7,"visible":1},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0}]},"Frame Index":{"node":"Node_Counter","outputs":[{"type":1,"visible":1}],"inputs":[{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0}]},"Palette Extract":{"node":"Node_Palette_Extract","outputs":[{"type":3,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0}]},"Statistic":{"node":"Node_Statistic","outputs":[{"type":1,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":1,"visible":1}]},"Lua Surface":{"node":"Node_Lua_Surface","outputs":[{"type":9,"visible":1},{"type":4,"visible":1}],"inputs":[{"type":7,"visible":0},{"type":0,"visible":0},{"type":7,"visible":0},{"type":9,"visible":1},{"type":2,"visible":0},{"type":7,"visible":0},{"type":0,"visible":0},{"type":1,"visible":1}]},"Object Spawner":{"node":"Node_Rigid_Object_Spawner","outputs":[{"type":14,"visible":1}],"inputs":[{"type":14,"visible":1},{"type":1,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0}]},"Splice Spritesheet":{"node":"Node_Image_Sheet","outputs":[{"type":4,"visible":1},{"type":16,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":19,"visible":0},{"type":19,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0},{"type":3,"visible":0}]},"Normal":{"node":"Node_Normal","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0},{"type":2,"visible":0}]},"Spawner":{"node":"Node_VFX_Spawner","outputs":[{"type":13,"visible":1},{"type":9,"visible":1},{"type":9,"visible":1},{"type":9,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":6,"visible":0},{"type":22,"visible":0},{"type":1,"visible":0},{"type":6,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":0,"visible":1},{"type":0,"visible":0},{"type":2,"visible":0},{"type":22,"visible":0},{"type":2,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0},{"type":2,"visible":0},{"type":9,"visible":1},{"type":0,"visible":0}]},"VFX":{"node":"Node_VFX_Group","outputs":[],"inputs":[]},"Dilate":{"node":"Node_Dilate","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Strand Length Adjust":{"node":"Node_Strand_Length_Adjust","outputs":[{"type":17,"visible":1}],"inputs":[{"type":17,"visible":1},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0}]},"RGBA Combine":{"node":"Node_Combine_RGB","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":4,"visible":1},{"type":4,"visible":1},{"type":4,"visible":1},{"type":0,"visible":0}]},"Display Text":{"node":"Node_Display_Text","outputs":[],"inputs":[{"type":3,"visible":0},{"type":7,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":1,"visible":0}]},"Dither":{"node":"Node_Dither","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":3,"visible":0},{"type":0,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":4,"visible":1},{"type":0,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Skew":{"node":"Node_Skew","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":0,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Corner":{"node":"Node_Corner","outputs":[{"type":4,"visible":1}],"inputs":[{"type":4,"visible":1},{"type":1,"visible":0},{"type":4,"visible":1},{"type":1,"visible":0},{"type":2,"visible":0}]},"Vector Split":{"node":"Node_Vector_Split","outputs":[{"type":1,"visible":1},{"type":1,"visible":1},{"type":1,"visible":1},{"type":1,"visible":1}],"inputs":[{"type":1,"visible":1}]},"Print":{"node":"Node_Print","outputs":[],"inputs":[{"type":2,"visible":0},{"type":7,"visible":0}]},"Shape":{"node":"Node_Shape","outputs":[{"type":4,"visible":1}],"inputs":[{"type":0,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":2,"visible":0},{"type":0,"visible":0},{"type":0,"visible":0},{"type":1,"visible":0},{"type":3,"visible":0},{"type":3,"visible":0},{"type":2,"visible":0},{"type":1,"visible":0},{"type":12,"visible":1}]}} \ No newline at end of file diff --git a/objects/o_dialog_add_image/Create_0.gml b/objects/o_dialog_add_image/Create_0.gml index c71f0f144..77dc0e6a7 100644 --- a/objects/o_dialog_add_image/Create_0.gml +++ b/objects/o_dialog_add_image/Create_0.gml @@ -3,9 +3,9 @@ event_inherited(); #region data nodes = [ - ALL_NODES[? "Node_Image"], - ALL_NODES[? "Node_Image_Sequence"], - ALL_NODES[? "Node_Canvas"], + ALL_NODES[$ "Node_Image"], + ALL_NODES[$ "Node_Image_Sequence"], + ALL_NODES[$ "Node_Canvas"], ]; destroy_on_click_out = true; diff --git a/objects/o_dialog_add_multiple_images/Create_0.gml b/objects/o_dialog_add_multiple_images/Create_0.gml index 3fde6a6e4..4695e8d78 100644 --- a/objects/o_dialog_add_multiple_images/Create_0.gml +++ b/objects/o_dialog_add_multiple_images/Create_0.gml @@ -3,10 +3,10 @@ event_inherited(); #region data nodes = [ - ALL_NODES[? "Node_Image"], - ALL_NODES[? "Node_Image_Sequence"], - ALL_NODES[? "Node_Image_Animated"], - ALL_NODES[? "Node_Canvas"], + ALL_NODES[$ "Node_Image"], + ALL_NODES[$ "Node_Image_Sequence"], + ALL_NODES[$ "Node_Image_Animated"], + ALL_NODES[$ "Node_Canvas"], ]; destroy_on_click_out = true; @@ -25,7 +25,7 @@ event_inherited(); if(is_dir) { dialog_h += ui(96); dialog_w += ui(80); - array_push(nodes, ALL_NODES[? "Node_Directory_Search"]); + array_push(nodes, ALL_NODES[$ "Node_Directory_Search"]); } } diff --git a/objects/o_dialog_add_node/Create_0.gml b/objects/o_dialog_add_node/Create_0.gml index 864539753..b33ab478b 100644 --- a/objects/o_dialog_add_node/Create_0.gml +++ b/objects/o_dialog_add_node/Create_0.gml @@ -152,8 +152,8 @@ event_inherited(); for( var i = 0, n = array_length(sug); i < n; i++ ) { var k = array_safe_get_fast(sug, i); if(k == 0) continue; - if(ds_map_exists(ALL_NODES, k)) - ds_list_add(node_list, ALL_NODES[? k]); + if(struct_has(ALL_NODES, k)) + ds_list_add(node_list, ALL_NODES[$ k]); } } @@ -161,9 +161,9 @@ event_inherited(); var _favs = struct_get_names(global.FAV_NODES); for( var i = 0, n = array_length(_favs); i < n; i++ ) { var _nodeIndex = _favs[i]; - if(!ds_map_exists(ALL_NODES, _nodeIndex)) continue; + if(!struct_has(ALL_NODES, _nodeIndex)) continue; - var _node = ALL_NODES[? _nodeIndex]; + var _node = ALL_NODES[$ _nodeIndex]; if(_node.show_in_recent) ds_list_add(node_list, _node); } @@ -172,9 +172,9 @@ event_inherited(); if(is_array(global.RECENT_NODES)) for( var i = 0, n = array_length(global.RECENT_NODES); i < n; i++ ) { var _nodeIndex = global.RECENT_NODES[i]; - if(!ds_map_exists(ALL_NODES, _nodeIndex)) continue; + if(!struct_has(ALL_NODES, _nodeIndex)) continue; - var _node = ALL_NODES[? _nodeIndex]; + var _node = ALL_NODES[$ _nodeIndex]; if(_node.show_in_recent) ds_list_add(node_list, _node); } @@ -992,7 +992,7 @@ event_inherited(); __txtx("add_node_equation_enter", "Press Enter to create equation node.")); if(keyboard_check_pressed(vk_enter)) - buildNode(ALL_NODES[? "Node_Equation"], { query: eq } ); + buildNode(ALL_NODES[$ "Node_Equation"], { query: eq } ); return hh; } diff --git a/scripts/__node_custom/__node_custom.gml b/scripts/__node_custom/__node_custom.gml index 0da2fd2be..2b5f2d598 100644 --- a/scripts/__node_custom/__node_custom.gml +++ b/scripts/__node_custom/__node_custom.gml @@ -171,9 +171,6 @@ function __initNodeCustom(list) { #region root += "/Custom"; directory_verify(root); - // if(check_version($"{root}/version")) - // zip_unzip("data/Nodes.zip", root); - var f = file_find_first(root + "/*", fa_directory); while (f != "") { diff --git a/scripts/action_loader/action_loader.gml b/scripts/action_loader/action_loader.gml index 6b7ba7593..e69de29bb 100644 --- a/scripts/action_loader/action_loader.gml +++ b/scripts/action_loader/action_loader.gml @@ -1,13 +0,0 @@ -#region action - global.ACTIONS = []; - - function __initAction() { - global.ACTIONS = []; - - var root = DIRECTORY + "Actions"; - directory_verify(root); - - if(check_version($"{root}/version")) - zip_unzip("data/Actions.zip", DIRECTORY); - } -#endregion \ No newline at end of file diff --git a/scripts/node_action_object/node_action_object.gml b/scripts/node_action_object/node_action_object.gml index cd186a2fe..1af2a6aae 100644 --- a/scripts/node_action_object/node_action_object.gml +++ b/scripts/node_action_object/node_action_object.gml @@ -1,168 +1,178 @@ -#region node action - function NodeAction() constructor { - name = ""; - spr = noone; - node = noone; - tags = []; - - tooltip = ""; - tooltip_spr = noone; - new_node = false; +global.ACTIONS = []; + +function NodeAction() constructor { + name = ""; + spr = noone; + node = noone; + tags = []; - nodes = []; - connections = []; + tooltip = ""; + tooltip_spr = noone; + new_node = false; + + nodes = []; + connections = []; + + inputNode = noone; + outputNode = noone; + + location = noone; + + static getName = function() { return name; } + static getTooltip = function() { return tooltip; } + + static build = function(_x = 0, _y = 0, _group = PANEL_GRAPH.getCurrentContext(), _param = {}) { + var _n = {}; + var _node_in = noone; + var _node_out = noone; - inputNode = noone; - outputNode = noone; - - location = noone; - - static getName = function() { return name; } - static getTooltip = function() { return tooltip; } - - static build = function(_x = 0, _y = 0, _group = PANEL_GRAPH.getCurrentContext(), _param = {}) { - var _n = {}; - var _node_in = noone; - var _node_out = noone; + 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; - 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; + var _id = struct_try_get(__n, "id", i); + var _node = nodeBuild(__n.node, _nx, _ny, _group); + _n[$ _id] = _node; + + if(struct_has(__n, "setValues")) { + var _setVals = __n.setValues; - var _id = struct_try_get(__n, "id", i); - var _node = nodeBuild(__n.node, _nx, _ny, _group); - _n[$ _id] = _node; - - if(struct_has(__n, "setValues")) { - var _setVals = __n.setValues; - - if(is_array(_setVals)) { - for(var j = 0, m = array_length(_setVals); j < m; j++ ) { - var _setVal = _setVals[j]; - var _input = is_string(_setVal.index)? _node.inputMap[$ _setVal.index] : _node.inputs[_setVal.index]; - if(_input == undefined) continue; - if(!value_type_direct_settable(_input.type)) continue; - - if(struct_has(_setVal, "value")) _input.setValue(_setVal.value); - if(struct_has(_setVal, "unit")) _input.unit.setMode(_setVal.unit); - if(struct_has(_setVal, "expression")) _input.setExpression(_setVal.expression); - } - } else if(is_struct(_setVals)) { - var _keys = struct_get_names(_setVals); - for (var j = 0, m = array_length(_keys); j < m; j++) { - var _key = _keys[j]; - var _input = _node.inputs[_key]; - if(_input == undefined) continue; - if(!value_type_direct_settable(_input.type)) continue; - - var _setVal = _setVals[$ _key]; - - if(struct_has(_setVal, "value")) _input.setValue(_setVal.value); - if(struct_has(_setVal, "unit")) _input.unit.setMode(_setVal.unit); - if(struct_has(_setVal, "expression")) _input.setExpression(_setVal.expression); - } + if(is_array(_setVals)) { + for(var j = 0, m = array_length(_setVals); j < m; j++ ) { + var _setVal = _setVals[j]; + var _input = is_string(_setVal.index)? _node.inputMap[$ _setVal.index] : _node.inputs[_setVal.index]; + if(_input == undefined) continue; + if(!value_type_direct_settable(_input.type)) continue; + + if(struct_has(_setVal, "value")) _input.setValue(_setVal.value); + if(struct_has(_setVal, "unit")) _input.unit.setMode(_setVal.unit); + if(struct_has(_setVal, "expression")) _input.setExpression(_setVal.expression); + } + } else if(is_struct(_setVals)) { + var _keys = struct_get_names(_setVals); + for (var j = 0, m = array_length(_keys); j < m; j++) { + var _key = _keys[j]; + var _input = _node.inputs[_key]; + if(_input == undefined) continue; + if(!value_type_direct_settable(_input.type)) continue; + + var _setVal = _setVals[$ _key]; + + if(struct_has(_setVal, "value")) _input.setValue(_setVal.value); + if(struct_has(_setVal, "unit")) _input.unit.setMode(_setVal.unit); + if(struct_has(_setVal, "expression")) _input.setExpression(_setVal.expression); } } - - if(i == inputNode) _node_in = _node; - if(i == outputNode) _node_out = _node; } - - for( var i = 0, n = array_length(connections); i < n; i++ ) { - var _c = connections[i]; - var _frN = _n[$ _c.from]; - var _toN = _n[$ _c.to]; - if(_frN == undefined || _toN == undefined) continue; - - var _frO = is_string(_c.fromIndex)? _frN.outputMap[$ _c.fromIndex] : _frN.outputs[_c.fromIndex]; - var _toI = is_string(_c.toIndex)? _toN.inputMap[$ _c.toIndex] : _toN.inputs[_c.toIndex]; - if(_frO == undefined || _toI == undefined) continue; - - _toI.setFrom(_frO); - } - - return { nodes: _n, inputNode: _node_in, outputNode: _node_out }; + + if(i == inputNode) _node_in = _node; + if(i == outputNode) _node_out = _node; } - static serialize = function() { - var map = { name, tooltip, nodes, connections, tags }; - return map; + for( var i = 0, n = array_length(connections); i < n; i++ ) { + var _c = connections[i]; + var _frN = _n[$ _c.from]; + var _toN = _n[$ _c.to]; + if(_frN == undefined || _toN == undefined) continue; + + var _frO = is_string(_c.fromIndex)? _frN.outputMap[$ _c.fromIndex] : _frN.outputs[_c.fromIndex]; + var _toI = is_string(_c.toIndex)? _toN.inputMap[$ _c.toIndex] : _toN.inputs[_c.toIndex]; + if(_frO == undefined || _toI == undefined) continue; + + _toI.setFrom(_frO); } - - 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); - - location = struct_try_get(map, "location", noone); - - if(struct_has(map, "sprPath")) { - var _path = string_replace(map.sprPath, "./", filename_dir(path) + "/"); - - if(file_exists_empty(_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 NodeAction_create() : NodeAction() constructor { - name = "Create Action..."; - spr = s_action_add; - hide_bg = true; - - static build = function() { PANEL_GRAPH.createAction(); } + return { nodes: _n, inputNode: _node_in, outputNode: _node_out }; } - function __initNodeActions() { - var root = $"{DIRECTORY}Actions"; - directory_verify(root); + static serialize = function() { + var map = { name, tooltip, nodes, connections, tags }; + return map; + } + + static deserialize = function(path) { + var map = json_load_struct(path); - root += "/Nodes"; - directory_verify(root); + 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", []); - ds_list_clear(NODE_ACTION_LIST); - ds_list_add(NODE_ACTION_LIST, new NodeAction_create()); + inputNode = struct_try_get(map, "inputNode", noone); + outputNode = struct_try_get(map, "outputNode", noone); - var f = file_find_first(root + "/*", 0); + location = struct_try_get(map, "location", noone); - while (f != "") { - if(filename_ext(f) == ".json") { - var _c = new NodeAction().deserialize($"{root}/{f}"); - ds_list_add(NODE_ACTION_LIST, _c); + if(struct_has(map, "sprPath")) { + var _path = string_replace(map.sprPath, "./", filename_dir(path) + "/"); + + if(file_exists_empty(_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 NodeAction_create() : NodeAction() constructor { + name = "Create Action..."; + spr = s_action_add; + hide_bg = true; + + static build = function() { PANEL_GRAPH.createAction(); } +} + +function __initNodeActions() { + var root = $"{DIRECTORY}Actions"; + directory_verify(root); + + root += "/Nodes"; + directory_verify(root); + + ds_list_clear(NODE_ACTION_LIST); + ds_list_add(NODE_ACTION_LIST, new NodeAction_create()); + + var f = file_find_first(root + "/*", 0); + + while (f != "") { + if(filename_ext(f) == ".json") { + var _c = new NodeAction().deserialize($"{root}/{f}"); + ds_list_add(NODE_ACTION_LIST, _c); + + if(_c.location != noone) { + var _cat = array_safe_get(_c.location, 0, ""); + var _grp = array_safe_get(_c.location, 1, ""); - if(_c.location != noone) { - var _cat = array_safe_get(_c.location, 0, ""); - var _grp = array_safe_get(_c.location, 1, ""); + for( var i = 0, n = ds_list_size(NODE_CATEGORY); i < n; i++ ) { + if(NODE_CATEGORY[| i].name != _cat) continue; + var _list = NODE_CATEGORY[| i].list; + var j = 0; - for( var i = 0, n = ds_list_size(NODE_CATEGORY); i < n; i++ ) { - if(NODE_CATEGORY[| i].name != _cat) continue; - var _list = NODE_CATEGORY[| i].list; - var j = 0; - - if(_grp != "") - for( var m = ds_list_size(_list); j < m; j++ ) - if(_list[| j] == _grp) break; - - ds_list_insert(_list, j + 1, _c); - break; - } + if(_grp != "") + for( var m = ds_list_size(_list); j < m; j++ ) + if(_list[| j] == _grp) break; + + ds_list_insert(_list, j + 1, _c); + break; } } - - f = file_find_next(); } - file_find_close(); + + f = file_find_next(); } -#endregion \ No newline at end of file + file_find_close(); +} + +function __initAction() { + global.ACTIONS = []; + + var root = DIRECTORY + "Actions"; + directory_verify(root); + + if(check_version($"{root}/version")) + zip_unzip("data/Nodes/Actions.zip", DIRECTORY); +} \ No newline at end of file diff --git a/scripts/node_guide/node_guide.gml b/scripts/node_guide/node_guide.gml index a9c291287..a78c33976 100644 --- a/scripts/node_guide/node_guide.gml +++ b/scripts/node_guide/node_guide.gml @@ -2,8 +2,8 @@ globalvar NODE_EXTRACT; NODE_EXTRACT = false; function __generate_node_data() { #region - var amo = ds_map_size(ALL_NODES); - var k = ds_map_find_first(ALL_NODES); + + var key = struct_get_names(ALL_NODES); CLONING = true; NODE_EXTRACT = true; @@ -15,10 +15,10 @@ function __generate_node_data() { #region var junc = {}; var locale = {}; - repeat(amo) { - var _n = ALL_NODES[? k]; + for( var i = 0, n = array_length(key); i < n; i++ ) { + var k = key[i]; + var _n = ALL_NODES[$ k]; var _b = _n.build(0, 0); - k = ds_map_find_next(ALL_NODES, k); if(_b.name == "") continue; @@ -35,31 +35,31 @@ function __generate_node_data() { #region var _lin = [], _lot = []; var _din = [], _dot = []; - for( var i = 0; i < array_length(_b.inputs); i++ ) { - _din[i] = variable_clone(_b.inputs[i], 1); + for( var j = 0; j < array_length(_b.inputs); j++ ) { + _din[j] = variable_clone(_b.inputs[j], 1); - _jin[i] = { - type: _b.inputs[i].type, - visible: _b.inputs[i].visible? 1 : 0, + _jin[j] = { + type: _b.inputs[j].type, + visible: _b.inputs[j].visible? 1 : 0, }; - _lin[i] = { - name: _b.inputs[i]._initName, - tooltip: _b.inputs[i].tooltip, + _lin[j] = { + name: _b.inputs[j]._initName, + tooltip: _b.inputs[j].tooltip, }; } - for( var i = 0; i < array_length(_b.outputs); i++ ) { - _dot[i] = variable_clone(_b.outputs[i], 1); + for( var j = 0; j < array_length(_b.outputs); j++ ) { + _dot[j] = variable_clone(_b.outputs[j], 1); - _jot[i] = { - type: _b.outputs[i].type, - visible: _b.outputs[i].visible? 1 : 0, + _jot[j] = { + type: _b.outputs[j].type, + visible: _b.outputs[j].visible? 1 : 0, }; - _lot[i] = { - name: _b.outputs[i]._initName, - tooltip: _b.outputs[i].tooltip, + _lot[j] = { + name: _b.outputs[j]._initName, + tooltip: _b.outputs[j].tooltip, }; } @@ -149,29 +149,18 @@ function __initNodeData() { var nodeDir = DIRECTORY + "Nodes/"; directory_verify(nodeDir); - if(check_version($"{nodeDir}version")) { - zip_unzip("data/Tooltip.zip", nodeDir); - - file_delete($"{nodeDir}nodes.json"); - file_copy_override("data/nodes.json", $"{nodeDir}nodes.json"); - } + if(check_version($"{nodeDir}version")) + zip_unzip("data/Nodes/Tooltip.zip", nodeDir); var dir = $"{nodeDir}Related/"; directory_verify(dir); if(check_version($"{dir}version")) { - var _relFrom = $"data/related_node.json"; + var _relFrom = $"data/Nodes/related_node.json"; var _relTo = $"{dir}default.json"; file_copy_override(_relFrom, _relTo); } - var dir = $"{nodeDir}Data/"; - - directory_verify(dir); - if(check_version($"{dir}version")) { - zip_unzip("data/Nodes/Internal.zip", nodeDir); - } - __initNodeReleated(); } \ No newline at end of file diff --git a/scripts/node_registry/node_registry.gml b/scripts/node_registry/node_registry.gml index 22814920b..f7ca98c7a 100644 --- a/scripts/node_registry/node_registry.gml +++ b/scripts/node_registry/node_registry.gml @@ -3,8 +3,9 @@ globalvar SUPPORTER_NODES, NEW_NODES; globalvar NODE_PAGE_DEFAULT; + globalvar NODE_ACTION_LIST; - ALL_NODES = ds_map_create(); + ALL_NODES = {}; NODE_CATEGORY = ds_list_create(); NODE_PB_CATEGORY = ds_list_create(); NODE_PCX_CATEGORY = ds_list_create(); @@ -52,6 +53,7 @@ function NodeObject(_name, _spr, _node, _tooltip = "") constructor { tags = []; tooltip = _tooltip; + pxc_version = 0; new_node = false; tooltip_spr = noone; deprecated = false; @@ -105,7 +107,8 @@ function NodeObject(_name, _spr, _node, _tooltip = "") constructor { INLINE if(IS_CMD) return self; - new_node = version >= LATEST_VERSION; + pxc_version = version; + new_node = version >= LATEST_VERSION; if(new_node) { if(global.__currPage != global.__currNewPage) { @@ -288,31 +291,34 @@ function NodeObject(_name, _spr, _node, _tooltip = "") constructor { static serialize = function() { var _str = { name, - tooltip, + spr: sprite_get_name(spr), baseNode: nodeName, io: ioArray, } - if(createFn != noone) _str.build = script_get_name(createFn); - if(deprecated) _str.deprecated = true; - if(!array_empty(tags)) _str.alias = tags; + if(tooltip != "") _str.tooltip = tooltip; + if(createFn != noone) _str.build = script_get_name(createFn); + if(deprecated) _str.deprecated = true; + if(pxc_version) _str.pxc_version = pxc_version; + if(!show_in_recent) _str.show_in_recent = show_in_recent; + if(!array_empty(tags)) _str.alias = tags; return _str; } static deserialize = function(_data) { - if(struct_has(_data, "tooltip")) _n.setTooltip(_data.tooltip); + if(struct_has(_data, "tooltip")) setTooltip(_data.tooltip); if(struct_has(_data, "io")) { var _io = _data.io; for( var i = 0, n = array_length(_io); i < n; i++ ) - _n.setIO(value_type_from_string(_io[i])); + setIO(value_type_from_string(_io[i])); } if(struct_has(_data, "build")) { var _bfn = asset_get_index(_data.build); - if(_bfn != -1) _n.setBuild(_bfn); + if(_bfn != -1) setBuild(_bfn); } if(struct_has(_data, "deprecated")) @@ -320,6 +326,12 @@ function NodeObject(_name, _spr, _node, _tooltip = "") constructor { if(struct_has(_data, "alias")) setTags(_data.alias); + + if(struct_has(_data, "show_in_recent")) + show_in_recent = _data.show_in_recent; + + if(struct_has(_data, "pxc_version")) + setVersion(_data.pxc_version); return self; } @@ -328,47 +340,17 @@ function NodeObject(_name, _spr, _node, _tooltip = "") constructor { function nodeBuild(_name, _x, _y, _group = PANEL_GRAPH.getCurrentContext()) { INLINE - if(!ds_map_exists(ALL_NODES, _name)) { + if(!struct_has(ALL_NODES, _name)) { log_warning("LOAD", $"Node type {_name} not found"); return noone; } - var _node = ALL_NODES[? _name]; + var _node = ALL_NODES[$ _name]; var _bnode = _node.build(_x, _y, _group); return _bnode; } -function addNodeDirect(_list, _name) { - if(!ds_map_exists(ALL_NODES, _name)) return; - - var _n = ALL_NODES[? _name]; - ds_list_add(_list, _n); -} - -function addNodeObject(_list, _name = "", _node = noone, tooltip = "") { - var _nodeName = script_get_name(_node); - - if(ds_map_exists(ALL_NODES, _nodeName)) { - var _n = ALL_NODES[? _nodeName]; - if(tooltip != "") _n.setTooltip(tooltip); - - ds_list_add(_list, _n); - return _n; - } - - var _spr = asset_get_index($"s_{string_lower(_nodeName)}"); - if(_spr == -1) _spr = s_node_icon; - - var _n = new NodeObject(_name, _spr, _node, tooltip); - if(tooltip != "") _n.setTooltip(tooltip); - - ALL_NODES[? _nodeName] = _n; - - ds_list_add(_list, _n); - return _n; -} - function addNodeCatagory( name, list, filter = [], color = noone) { ds_list_add(NODE_CATEGORY, { name, list, filter, color }); global.__currPage = name; } function addNodePBCatagory( name, list, filter = []) { ds_list_add(NODE_PB_CATEGORY, { name, list, filter }); } function addNodePCXCatagory( name, list, filter = []) { ds_list_add(NODE_PCX_CATEGORY, { name, list, filter }); } @@ -380,12 +362,12 @@ function __read_node_directory(dir) { __read_node_folder(dir); var _dirs = []; - var _f = file_find_first(dir + "*", fa_directory); + var _f = file_find_first(dir + "/*", fa_directory); var f, p; while(_f != "") { f = _f; - p = dir + f; + p = dir + "/" + f; _f = file_find_next(); if(!directory_exists(p)) continue; @@ -404,18 +386,20 @@ function __read_node_folder(dir) { var _name = _data[$ "name"]; var _base = _data[$ "baseNode"]; var _inme = _data[$ "iname"] ?? _base; - var _spr = _data[$ "icon"]; + var _spr = _data[$ "spr"]; if(is_undefined(_base)) { print($"NODE ERROR: baseNode not found in {_info}."); return; } - if(ds_map_exists(ALL_NODES, _inme)) + if(struct_has(ALL_NODES, _inme)) print($"NODE WARNING: Duplicate node iname {_inme}."); if(is_undefined(_spr)) - _spr = asset_get_index($"s_{string_lower(_inme)}"); + _spr = $"s_{string_lower(_inme)}"; + _spr = asset_get_index(_spr); + if(!sprite_exists(_spr)) _spr = s_node_icon; @@ -424,10 +408,42 @@ function __read_node_folder(dir) { _n.deserialize(_data); - ALL_NODES[? _inme] = _n; + ALL_NODES[$ _inme] = _n; return _n; } +function __read_node_display(_list, _addCat) { + + for( var i = 0, n = array_length(_list); i < n; i++ ) { + var _dl = _list[i]; + var _name = _dl.name; + var _filter = _dl[$ "context"] ?? []; + var _color = noone; + + if(struct_has(_dl, "color")) _color = COLORS[$ _dl.color]; + + var _l = ds_list_create(); + _addCat(_name, _l, _filter, _color); + + var _nodes = _dl.nodes; + for( var j = 0, m = array_length(_nodes); j < m; j++ ) { + var _n = _nodes[j]; + + if(is_string(_n)) { + if(struct_has(ALL_NODES, _n)) + ds_list_add(_l, ALL_NODES[$ _n]); + continue; + } + + if(is_struct(_n)) { + if(struct_has(_n, "label")) + ds_list_add(_l, _n.label); + } + } + } + +} + function __initNodes() { global.__currPage = ""; global.__startPage = 0; @@ -449,1701 +465,35 @@ function __initNodes() { NODE_PAGE_DEFAULT = ds_list_size(NODE_CATEGORY); ADD_NODE_PAGE = NODE_PAGE_DEFAULT; - // NODE DATA + ////- DATA - var dir = $"{DIRECTORY}Nodes/Data/Internal/"; - __read_node_directory(dir) + var dir = $"{DIRECTORY}Nodes/Data/"; + directory_verify(dir); + if(check_version($"{dir}version")) + zip_unzip("data/Nodes/Internal.zip", $"{DIRECTORY}Nodes/Data/"); - // NODE LIST + var dir = $"{DIRECTORY}Nodes/Data/Internal"; + __read_node_directory(dir); - var fav = ds_list_create(); - NODE_ADD_CAT("Home", fav); + ////- DISPLAY -#region group - var group = ds_list_create(); - NODE_ADD_CAT("Group", group, ["Node_Group"], COLORS.node_blend_collection); - ds_list_add(group, "Groups"); - addNodeObject(group, "Input", Node_Group_Input) - .setIO(VALUE_TYPE.any).hideRecent(); - addNodeObject(group, "Output", Node_Group_Output) - .setIO(VALUE_TYPE.any).hideRecent(); - addNodeObject(group, "Thumbnail", Node_Group_Thumbnail) - .setIO(VALUE_TYPE.surface).hideRecent(); -#endregion + var _relFrom = $"data/Nodes/display_data.json"; + var _relTo = $"{DIRECTORY}Nodes/Data/display_data.json"; + print(file_exists(_relFrom)) + file_copy_override(_relFrom, _relTo); -#region for - var iter = ds_list_create(); - NODE_ADD_CAT("Loop", iter, ["Node_Iterate"], COLORS.node_blend_loop); //#For - ds_list_add(iter, "Groups"); - addNodeObject(iter, "Loop Input", Node_Iterator_Input) - .setIO(VALUE_TYPE.any).setSpr(s_node_loop_input).hideRecent(); - addNodeObject(iter, "Loop Output", Node_Iterator_Output) - .setIO(VALUE_TYPE.any).setSpr(s_node_loop_output).hideRecent(); - addNodeObject(iter, "Input", Node_Group_Input) - .setIO(VALUE_TYPE.any).hideRecent(); - addNodeObject(iter, "Output", Node_Group_Output) - .setIO(VALUE_TYPE.any).hideRecent(); - addNodeObject(iter, "Thumbnail", Node_Group_Thumbnail) - .setIO(VALUE_TYPE.surface).hideRecent(); - - ds_list_add(iter, "Loops"); - addNodeObject(iter, "Index", Node_Iterator_Index) - .setIO(VALUE_TYPE.float).hideRecent(); - addNodeObject(iter, "Loop amount", Node_Iterator_Length) - .setIO(VALUE_TYPE.float).setSpr(s_node_iterator_amount).hideRecent(); -#endregion + var _data = json_load_struct(_relTo); -#region for inline - var iter_il = ds_list_create(); - NODE_ADD_CAT("Loop", iter_il, ["Node_Iterate_Inline"], COLORS.node_blend_loop); //#For inline - ds_list_add(iter_il, "Loops"); - addNodeObject(iter_il, "Index", Node_Iterator_Index) - .setIO(VALUE_TYPE.float).hideRecent(); - addNodeObject(iter_il, "Loop amount", Node_Iterator_Length) - .setIO(VALUE_TYPE.float).setSpr(s_node_iterator_amount).hideRecent(); -#endregion + __read_node_display(_data.list, addNodeCatagory); -#region for each - var itere = ds_list_create(); - NODE_ADD_CAT("Loop", itere, ["Node_Iterate_Each"], COLORS.node_blend_loop); //#Foreach - ds_list_add(itere, "Groups"); - addNodeObject(itere, "Input", Node_Group_Input) - .setIO(VALUE_TYPE.any).hideRecent(); - addNodeObject(itere, "Output", Node_Group_Output) - .setIO(VALUE_TYPE.any).hideRecent(); - addNodeObject(itere, "Thumbnail", Node_Group_Thumbnail) - .setIO(VALUE_TYPE.surface).hideRecent(); - - ds_list_add(itere, "Loops"); - addNodeObject(itere, "Index", Node_Iterator_Index) - .setIO(VALUE_TYPE.float).hideRecent(); - addNodeObject(itere, "Array Length", Node_Iterator_Each_Length) - .setIO(VALUE_TYPE.float).setSpr(s_node_iterator_length).hideRecent(); -#endregion - -#region for each inline - var itere_il = ds_list_create(); - NODE_ADD_CAT("Loop", itere_il, ["Node_Iterate_Each_Inline"], COLORS.node_blend_loop); //#Foreach inline - ds_list_add(itere_il, "Loops"); - addNodeObject(itere_il, "Index", Node_Iterator_Index) - .setIO(VALUE_TYPE.float).hideRecent(); - addNodeObject(itere_il, "Array Length", Node_Iterator_Length) - .setIO(VALUE_TYPE.float).hideRecent(); -#endregion - -#region iterate filter - var filter = ds_list_create(); - NODE_ADD_CAT("Filter", filter, ["Node_Iterate_Filter"], COLORS.node_blend_loop); //#Loop filter - ds_list_add(filter, "Groups"); - addNodeObject(filter, "Input", Node_Group_Input) - .setIO(VALUE_TYPE.any).hideRecent(); - addNodeObject(filter, "Output", Node_Group_Output) - .setIO(VALUE_TYPE.any).hideRecent(); - addNodeObject(filter, "Thumbnail", Node_Group_Thumbnail) - .setIO(VALUE_TYPE.surface).hideRecent(); - - ds_list_add(filter, "Loops"); - addNodeObject(filter, "Index", Node_Iterator_Index) - .setIO(VALUE_TYPE.float).hideRecent(); - addNodeObject(filter, "Array Length", Node_Iterator_Each_Length) - .setIO(VALUE_TYPE.float).setSpr(s_node_iterator_length).hideRecent(); -#endregion - -#region iterate filter inline - var filter_il = ds_list_create(); - NODE_ADD_CAT("Filter", filter_il, ["Node_Iterate_Filter_Inline"], COLORS.node_blend_loop); //#Loop filter inline - ds_list_add(filter_il, "Loops"); - addNodeObject(filter_il, "Index", Node_Iterator_Index) - .setIO(VALUE_TYPE.float).hideRecent(); - addNodeObject(filter_il, "Array Length", Node_Iterator_Length) - .setIO(VALUE_TYPE.float).hideRecent(); -#endregion - -#region iterate feedback - var feed = ds_list_create(); - NODE_ADD_CAT("Feedback", feed, ["Node_Feedback"], COLORS.node_blend_feedback); //#Feedback - ds_list_add(feed, "Groups"); - addNodeObject(feed, "Input", Node_Feedback_Input) - .setIO(VALUE_TYPE.any).hideRecent(); - addNodeObject(feed, "Output", Node_Feedback_Output) - .setIO(VALUE_TYPE.any).hideRecent(); - addNodeObject(feed, "Thumbnail", Node_Group_Thumbnail) - .setIO(VALUE_TYPE.surface).hideRecent(); -#endregion - -#region vfx - var vfx = ds_list_create(); - NODE_ADD_CAT("VFX", vfx, ["Node_VFX_Group", "Node_VFX_Group_Inline"], COLORS.node_blend_vfx); - ds_list_add(vfx, "Groups"); - addNodeObject(vfx, "Input", Node_Group_Input) - .setIO(VALUE_TYPE.any).hideRecent().hideGlobal(); - addNodeObject(vfx, "Output", Node_Group_Output) - .setIO(VALUE_TYPE.any).hideRecent().hideGlobal(); - addNodeObject(vfx, "Renderer", Node_VFX_Renderer_Output) - .setIO(VALUE_TYPE.surface, VALUE_TYPE.particle).setSpr(s_node_vfx_render_output).hideRecent().hideGlobal(); - - ds_list_add(vfx, "Main"); - addNodeObject(vfx, "Spawner", Node_VFX_Spawner, "Spawn new particles.") - .setIO(VALUE_TYPE.particle).setSpr(s_node_vfx_spawn).hideRecent(); - addNodeObject(vfx, "Renderer", Node_VFX_Renderer, "Render particle objects to surface.") - .setIO(VALUE_TYPE.particle).setSpr(s_node_vfx_render).hideRecent(); - - ds_list_add(vfx, "Affectors"); - addNodeObject(vfx, "Accelerate", Node_VFX_Accelerate, "Change the speed of particle in range.") - .setIO(VALUE_TYPE.particle).hideRecent(); - addNodeObject(vfx, "Destroy", Node_VFX_Destroy, "Destroy particle in range.") - .setIO(VALUE_TYPE.particle).hideRecent(); - addNodeObject(vfx, "Attract", Node_VFX_Attract, "Attract particle in range to one point.") - .setIO(VALUE_TYPE.particle).hideRecent(); - addNodeObject(vfx, "Wind", Node_VFX_Wind, "Move particle in range.") - .setIO(VALUE_TYPE.particle).hideRecent(); - addNodeObject(vfx, "Vortex", Node_VFX_Vortex, "Rotate particle around a point.") - .setIO(VALUE_TYPE.particle).hideRecent(); - addNodeObject(vfx, "Turbulence", Node_VFX_Turbulence, "Move particle in range randomly.") - .setIO(VALUE_TYPE.particle).hideRecent(); - addNodeObject(vfx, "Repel", Node_VFX_Repel, "Move particle away from point.") - .setIO(VALUE_TYPE.particle).hideRecent(); - addNodeObject(vfx, "Oscillate", Node_VFX_Oscillate, "Swing particle around its original trajectory.") - .setIO(VALUE_TYPE.particle).hideRecent().setVersion(11560); - addNodeObject(vfx, "Boids", Node_VFX_Boids, "Apply boids algorithm to create a flock behaviour.") - .setIO(VALUE_TYPE.particle).hideRecent().setVersion(1_18_01_0); - - ds_list_add(vfx, "Generates"); - addNodeObject(vfx, "VFX Trail", Node_VFX_Trail, "Generate path from particle movement.") - .setIO(VALUE_TYPE.particle).hideRecent().setVersion(11560); - addNodeObject(vfx, "VFX Triangulate", Node_VFX_Triangulate, "Render line between particles.") - .setIO(VALUE_TYPE.particle).hideRecent().setVersion(11670); - - ds_list_add(vfx, "Variables"); - addNodeObject(vfx, "VFX Variable", Node_VFX_Variable, "Extract variable from particle objects.") - .setIO(VALUE_TYPE.particle).hideRecent().setVersion(1120); - addNodeObject(vfx, "VFX Override", Node_VFX_Override, "Replace particle variable with a new one.") - .setIO(VALUE_TYPE.particle).hideRecent().setVersion(1120); -#endregion - -#region rigidSim - var rigidSim = ds_list_create(); - NODE_ADD_CAT("RigidSim", rigidSim, ["Node_Rigid_Group", "Node_Rigid_Group_Inline"], COLORS.node_blend_simulation); - ds_list_add(rigidSim, "Group"); - addNodeObject(rigidSim, "Input", Node_Group_Input) - .setIO(VALUE_TYPE.any).hideRecent().hideGlobal(); - addNodeObject(rigidSim, "Output", Node_Group_Output) - .setIO(VALUE_TYPE.any).hideRecent().hideGlobal(); - addNodeObject(rigidSim, "Render", Node_Rigid_Render_Output) - .setIO(VALUE_TYPE.rigid, VALUE_TYPE.surface).hideRecent().hideGlobal(); - addNodeObject(rigidSim, "RigidSim Global", Node_Rigid_Global) - .setIO(VALUE_TYPE.rigid).setVersion(1110).hideRecent(); - - ds_list_add(rigidSim, "RigidSim"); - addNodeObject(rigidSim, "Object", Node_Rigid_Object, "Spawn a rigidbody object.") - .setIO(VALUE_TYPE.rigid).hideRecent().setVersion(1110); - addNodeObject(rigidSim, "Object Spawner", Node_Rigid_Object_Spawner, "Spawn multiple rigidbody objects.") - .setIO(VALUE_TYPE.rigid).hideRecent().setVersion(1110); - addNodeObject(rigidSim, "Wall", Node_Rigid_Wall) - .setIO(VALUE_TYPE.rigid).hideRecent().setVersion(11680); - addNodeObject(rigidSim, "Render", Node_Rigid_Render, "Render rigidbody object to surface.") - .setIO(VALUE_TYPE.rigid).hideRecent().setVersion(1110); - addNodeObject(rigidSim, "Apply Force", Node_Rigid_Force_Apply, "Apply force to objects.") - .setIO(VALUE_TYPE.rigid).hideRecent().setVersion(1110); - addNodeObject(rigidSim, "Activate Physics", Node_Rigid_Activate, "Enable or disable rigidbody object.") - .setIO(VALUE_TYPE.rigid).hideRecent().setVersion(1110); - - ds_list_add(rigidSim, "Variables"); - addNodeObject(rigidSim, "Rigidbody Variable", Node_Rigid_Variable, "Extract veriable from rigidbody object.") - .setIO(VALUE_TYPE.rigid).hideRecent().setVersion(1120); - addNodeObject(rigidSim, "Rigidbody Override", Node_Rigid_Override, "Replace rigidbody object variable with a new one.") - .setIO(VALUE_TYPE.rigid).hideRecent().setVersion(1120); -#endregion - -#region smokeSim - var smokeSim = ds_list_create(); - NODE_ADD_CAT("SmokeSim", smokeSim, ["Node_Smoke_Group", "Node_Smoke_Group_Inline"], COLORS.node_blend_smoke); - ds_list_add(smokeSim, "Group"); - addNodeObject(smokeSim, "Input", Node_Group_Input) - .setIO(VALUE_TYPE.any).hideRecent().hideGlobal(); - addNodeObject(smokeSim, "Output", Node_Group_Output) - .setIO(VALUE_TYPE.any).hideRecent().hideGlobal(); - addNodeObject(smokeSim, "Render Domain", Node_Smoke_Render_Output) - .setIO(VALUE_TYPE.sdomain, VALUE_TYPE.surface).hideRecent().setVersion(11540).hideGlobal(); - - ds_list_add(smokeSim, "Domain"); - addNodeObject(smokeSim, "Domain", Node_Smoke_Domain) - .setIO(VALUE_TYPE.sdomain).hideRecent().setVersion(1120); - addNodeObject(smokeSim, "Update Domain", Node_Smoke_Update, "Run smoke by one step.") - .setIO(VALUE_TYPE.sdomain).hideRecent().setVersion(1120); - addNodeObject(smokeSim, "Render Domain", Node_Smoke_Render, "Render smoke to surface. This node also have update function build in.") - .setIO(VALUE_TYPE.sdomain).hideRecent().setVersion(1120); - addNodeObject(smokeSim, "Queue Domain", Node_Smoke_Domain_Queue, "Sync multiple domains to be render at the same time.") - .setIO(VALUE_TYPE.sdomain).hideRecent().setVersion(1120); - - ds_list_add(smokeSim, "Smoke"); - addNodeObject(smokeSim, "Add Emitter", Node_Smoke_Add, "Add smoke emitter.") - .setIO(VALUE_TYPE.sdomain).hideRecent().setVersion(1120); - addNodeObject(smokeSim, "Apply Velocity", Node_Smoke_Apply_Velocity, "Apply velocity to smoke.") - .setIO(VALUE_TYPE.sdomain).hideRecent().setVersion(1120); - addNodeObject(smokeSim, "Add Collider", Node_Smoke_Add_Collider, "Add solid object that smoke can collides to.") - .setIO(VALUE_TYPE.sdomain).hideRecent().setVersion(1120); - addNodeObject(smokeSim, "Vortex", Node_Smoke_Vortex, "Apply rotational force around a point.") - .setIO(VALUE_TYPE.sdomain).hideRecent().setVersion(1120); - addNodeObject(smokeSim, "Repulse", Node_Smoke_Repulse, "Spread smoke away from a point.") - .setIO(VALUE_TYPE.sdomain).hideRecent().setVersion(1120); - addNodeObject(smokeSim, "Turbulence", Node_Smoke_Turbulence, "Apply random velocity map to the smoke.") - .setIO(VALUE_TYPE.sdomain).hideRecent().setVersion(1120); -#endregion - -#region flipSim - var flipSim = ds_list_create(); - NODE_ADD_CAT("FLIP Fluid", flipSim, ["Node_FLIP_Group_Inline"], COLORS.node_blend_fluid); - ds_list_add(flipSim, "Domain"); - addNodeObject(flipSim, "Domain", Node_FLIP_Domain) - .setIO(VALUE_TYPE.fdomain).hideRecent().setVersion(11620); - addNodeObject(flipSim, "Render", Node_FLIP_Render) - .setIO(VALUE_TYPE.fdomain, VALUE_TYPE.surface).hideRecent().setVersion(11620); - addNodeObject(flipSim, "Update", Node_FLIP_Update) - .setIO(VALUE_TYPE.fdomain).hideRecent().setVersion(11620); - - ds_list_add(flipSim, "Fluid"); - addNodeObject(flipSim, "Spawner", Node_FLIP_Spawner) - .setIO(VALUE_TYPE.fdomain).hideRecent().setVersion(11620); - addNodeObject(flipSim, "Destroy", Node_FLIP_Destroy) - .setIO(VALUE_TYPE.fdomain).hideRecent().setVersion(11680); - - ds_list_add(flipSim, "Affectors"); - addNodeObject(flipSim, "Apply Velocity", Node_FLIP_Apply_Velocity) - .setIO(VALUE_TYPE.fdomain).hideRecent().setVersion(11620); - addNodeObject(flipSim, "Add Collider", Node_FLIP_Apply_Force) - .setIO(VALUE_TYPE.fdomain).hideRecent().setVersion(11620); - //addNodeObject(flipSim, "Add Rigidbody", Node_FLIP_Add_Rigidbody).hideRecent().setVersion(11680); - addNodeObject(flipSim, "Repel", Node_FLIP_Repel) - .setIO(VALUE_TYPE.fdomain).hideRecent().setVersion(11680); - addNodeObject(flipSim, "Vortex", Node_FLIP_Vortex) - .setIO(VALUE_TYPE.fdomain).hideRecent().setVersion(11680); - - ds_list_add(flipSim, "Misc"); - addNodeObject(flipSim, "FLIP to VFX", Node_FLIP_to_VFX) - .setIO(VALUE_TYPE.fdomain, VALUE_TYPE.particle).hideRecent().setVersion(11680); -#endregion - -#region strandSim - var strandSim = ds_list_create(); - NODE_ADD_CAT("StrandSim", strandSim, ["Node_Strand_Group", "Node_Strand_Group_Inline"], COLORS.node_blend_strand); - ds_list_add(strandSim, "Group"); - addNodeObject(strandSim, "Input", Node_Group_Input) - .setIO(VALUE_TYPE.any).hideRecent().hideGlobal(); - addNodeObject(strandSim, "Output", Node_Group_Output) - .setIO(VALUE_TYPE.any).hideRecent().hideGlobal(); - - ds_list_add(strandSim, "System"); - addNodeObject(strandSim, "Strand Create", Node_Strand_Create, "Create strands from point, path, or mesh.") - .setIO(VALUE_TYPE.strands).hideRecent().setVersion(1140); - addNodeObject(strandSim, "Strand Update", Node_Strand_Update, "Update strands by one step.") - .setIO(VALUE_TYPE.strands).hideRecent().setVersion(1140); - addNodeObject(strandSim, "Strand Render", Node_Strand_Render, "Render strands to surface as a single path.") - .setIO(VALUE_TYPE.strands).hideRecent().setVersion(1140); - addNodeObject(strandSim, "Strand Render Texture", Node_Strand_Render_Texture, "Render strands to surface as a textured path.") - .setIO(VALUE_TYPE.strands).hideRecent().setVersion(1140); - - ds_list_add(strandSim, "Affectors"); - addNodeObject(strandSim, "Strand Gravity", Node_Strand_Gravity, "Apply downward acceleration to strands.") - .setIO(VALUE_TYPE.strands).hideRecent().setVersion(1140); - addNodeObject(strandSim, "Strand Force Apply", Node_Strand_Force_Apply, "Apply general force to strands.") - .setIO(VALUE_TYPE.strands).hideRecent().setVersion(1140); - addNodeObject(strandSim, "Strand Break", Node_Strand_Break, "Detach strands from its origin.") - .setIO(VALUE_TYPE.strands).hideRecent().setVersion(1140); - addNodeObject(strandSim, "Strand Length Adjust", Node_Strand_Length_Adjust, "Adjust length of strands in area.") - .setIO(VALUE_TYPE.strands).hideRecent().setVersion(1140); - addNodeObject(strandSim, "Strand Collision", Node_Strand_Collision, "Create solid object for strands to collides to.") - .setIO(VALUE_TYPE.strands).hideRecent().setVersion(1140); -#endregion - - //\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\ - - global.__startPage = ds_list_size(NODE_CATEGORY); - -#region io - var input = ds_list_create(); - addNodeCatagory("IO", input); - ds_list_add(input, "Images"); - ds_list_add(input, "/Importers"); - - addNodeObject(input, "Image", Node_Image, "Load a single image from your computer.") - .setIO(VALUE_TYPE.surface).setBuild(Node_create_Image); - addNodeObject(input, "Image GIF", Node_Image_gif, "Load animated .gif from your computer.") - .setIO(VALUE_TYPE.surface).setBuild(Node_create_Image_gif); - addNodeObject(input, "Image Array", Node_Image_Sequence, "Load multiple images from your computer as array.") - .setIO(VALUE_TYPE.surface).setBuild(Node_create_Image_Sequence); - addNodeObject(input, "Animation", Node_Image_Animated, "Load multiple images from your computer as animation.") - .setIO(VALUE_TYPE.surface).setBuild(Node_create_Image_Animated); - addNodeObject(input, "SVG", Node_SVG, "Load a SVG file.") - .setIO(VALUE_TYPE.surface); - ds_list_add(input, "/Converters"); - addNodeObject(input, "Splice Spritesheet", Node_Image_Sheet, "Cut up spritesheet into animation or image array.") - .setIO(VALUE_TYPE.surface); - addNodeObject(input, "Array to Anim", Node_Sequence_Anim, "Convert array of images into animation.") - .setIO(VALUE_TYPE.surface); - addNodeObject(input, "Cache Array", Node_Cache_Array) - - if(!DEMO) { - ds_list_add(input, "/Exporters"); - addNodeObject(input, "Export", Node_Export, "Export image to file(s).") - .setIO(VALUE_TYPE.surface).setBuild(Node_create_Export); - } - - ds_list_add(input, "Canvas"); - addNodeObject(input, "Canvas", Node_Canvas, "Draw on surface using brush, eraser, etc.") - .setIO(VALUE_TYPE.surface).setTags(["draw"]); - addNodeObject(input, "Canvas Group", Node_Canvas_Group, "Create a group that combines multiple canvas nodes a layers.") - .setIO(VALUE_TYPE.surface).setTags(["draw"]).setVersion(11740); - addNodeObject(input, "Active Canvas", Node_Active_Canvas, "Draw using parameterized brush.").setTags(["draw"]) - .setIO(VALUE_TYPE.surface).setVersion(11570); - - ds_list_add(input, "Tileset"); - ds_list_add(input, "/Creators"); - addNodeObject(input, "Tileset", Node_Tile_Tileset, "Create tileset object.") - .setIO(VALUE_TYPE.surface, VALUE_TYPE.tileset).setVersion(1_18_03_0); - addNodeObject(input, "Tile Drawer", Node_Tile_Drawer, "Draw using tileset.") - .setIO(VALUE_TYPE.surface, VALUE_TYPE.tileset).setVersion(1_18_03_0); - addNodeObject(input, "Tile Rule", Node_Tile_Rule, "Apply tileset rules.") - .setIO(VALUE_TYPE.surface).setVersion(1_18_03_0); - addNodeObject(input, "Convert to Tilemap", Node_Tile_Convert, "Convert color image to tile data.") - .setIO(VALUE_TYPE.surface).setVersion(1_18_03_0); - ds_list_add(input, "/Exporters"); - addNodeObject(input, "Render Tilemap", Node_Tile_Render, "Render tilemap to image.") - .setIO(VALUE_TYPE.surface).setVersion(1_18_03_0); - addNodeObject(input, "Export Tilemap", Node_Tile_Tilemap_Export, "Export tilemap to file.") - .setIO(VALUE_TYPE.surface).setVersion(1_18_03_0); - - ds_list_add(input, "Files"); - addNodeObject(input, "Text File In", Node_Text_File_Read, "Load .txt in as text.") - .setIO(VALUE_TYPE.text).setTags(["txt"]).setVersion(1080); - addNodeObject(input, "Text File Out", Node_Text_File_Write, "Save text as a .txt file.") - .setIO(VALUE_TYPE.text).setTags(["txt"]).setVersion(1090); - addNodeObject(input, "CSV File In", Node_CSV_File_Read, "Load .csv as text, number array.") - .setIO(VALUE_TYPE.text, VALUE_TYPE.float).setTags(["comma separated value"]).setVersion(1090); - addNodeObject(input, "CSV File Out", Node_CSV_File_Write, "Save array as .csv file.") - .setIO(VALUE_TYPE.text, VALUE_TYPE.float).setTags(["comma separated value"]).setVersion(1090); - addNodeObject(input, "JSON File In", Node_Json_File_Read, "Load .json file using keys.") - .setIO(VALUE_TYPE.text, VALUE_TYPE.struct).setVersion(1090); - addNodeObject(input, "JSON File Out", Node_Json_File_Write, "Save data to .json file.") - .setIO(VALUE_TYPE.text, VALUE_TYPE.struct).setVersion(1090); - addNodeObject(input, "WAV File In", Node_WAV_File_Read, "Load wav audio file.") - .setIO(VALUE_TYPE.text, VALUE_TYPE.audioBit).setBuild(Node_create_WAV_File_Read).setVersion(1144); - addNodeObject(input, "WAV File Out", Node_WAV_File_Write, "Save wav audio file.") - .setIO(VALUE_TYPE.text, VALUE_TYPE.audioBit).setVersion(1145); - addNodeObject(input, "XML File In", Node_XML_File_Read, "Load xml file.") - .setIO(VALUE_TYPE.text, VALUE_TYPE.struct).setBuild(Node_create_XML_File_Read).setVersion(11720); - addNodeObject(input, "XML File Out", Node_XML_File_Write, "Write struct to xml file.") - .setIO(VALUE_TYPE.text, VALUE_TYPE.struct).setVersion(11720); - addNodeObject(input, "Byte File In", Node_Byte_File_Read, "Load any file to buffer.") - .setIO(VALUE_TYPE.text, VALUE_TYPE.buffer).setVersion(11670); - addNodeObject(input, "Byte File Out", Node_Byte_File_Write, "Save buffer content to a file.") - .setIO(VALUE_TYPE.text, VALUE_TYPE.buffer).setVersion(11670); - addNodeObject(input, "Directory Search", Node_Directory_Search, "Search for files in directory.") - .setIO(VALUE_TYPE.text).setBuild(Node_create_Directory_Search).setVersion(11710); - - ds_list_add(input, "Aseprite"); - addNodeObject(input, "ASE File In", Node_ASE_File_Read, "Load Aseprite file with support for layers, tags.") - .setBuild(Node_create_ASE_File_Read).setIO(VALUE_TYPE.surface).setVersion(1100); - addNodeObject(input, "ASE Layer", Node_ASE_layer, "Load Aseprite project file") - .setIO(VALUE_TYPE.surface).setVersion(1100); - addNodeObject(input, "ASE Tag", Node_ASE_Tag, "Read tag from ASE file.") - .setSpr(s_node_ase_layer).setIO(VALUE_TYPE.surface).setVersion(1_18_03_0); - - ds_list_add(input, "External"); - addNodeObject(input, "Websocket Receiver", Node_Websocket_Receiver, "Create websocket server to receive data from the network.") - .setVersion(1145); - addNodeObject(input, "Websocket Sender", Node_Websocket_Sender, "Create websocket server to send data to the network.") - .setVersion(1145); - addNodeObject(input, "Spout Sender", Node_Spout_Send, "Send surface through Spout.") - .setIO(VALUE_TYPE.surface).setVersion(11600); - addNodeObject(input, "MIDI In", Node_MIDI_In, "Receive MIDI message.") - .setVersion(11630).notTest(); - addNodeObject(input, "HTTP", Node_HTTP_request, "Request data from the internet.") - .setVersion(11780); - - ds_list_add(input, "Gamemaker"); - addNodeObject(input, "GMRoom", Node_GMRoom).setSpr(s_gmroom).setVersion(1_18_04_1); -#endregion - -#region transform - var transform = ds_list_create(); - addNodeCatagory("Transform", transform); - ds_list_add(transform, "Transforms"); - addNodeObject(transform, "Transform", Node_Transform, "Move, rotate, and scale image.") - .setIO(VALUE_TYPE.surface).setTags(["move", "rotate", "scale"]); - addNodeObject(transform, "Scale", Node_Scale, "Simple node for scaling image.") - .setIO(VALUE_TYPE.surface).setTags(["resize"]); - addNodeObject(transform, "Scale Algorithm", Node_Scale_Algo, "Scale image using pixel-art based scaling algorithms.") - .setBuild(Node_create_Scale_Algo).setIO(VALUE_TYPE.surface).setTags(["scale2x", "scale3x", "cleanedge"]); - addNodeObject(transform, "Flip", Node_Flip, "Flip image horizontally or vertically.") - .setIO(VALUE_TYPE.surface).setTags(["mirror"]); - addNodeObject(transform, "Offset", Node_Offset, "Shift image with tiling.") - .setIO(VALUE_TYPE.surface).setTags(["shift"]); - addNodeObject(transform, "Mirror", Node_Mirror, "Reflect the image along a reflection line.") - .setIO(VALUE_TYPE.surface).setVersion(1070); - addNodeObject(transform, "Polar Mirror", Node_Mirror_Polar, "Reflect the image along multiple reflection lines.") - .setIO(VALUE_TYPE.surface).setTags(["kaleidoscope"]).setVersion(1_18_06_2); - - ds_list_add(transform, "Crops"); - addNodeObject(transform, "Crop", Node_Crop, "Crop out image to create smaller ones.") - .setIO(VALUE_TYPE.surface); - addNodeObject(transform, "Crop Content", Node_Crop_Content, "Crop out empty pixel from the image.") - .setIO(VALUE_TYPE.surface); - - ds_list_add(transform, "Warps"); - addNodeObject(transform, "Warp", Node_Warp, "Warp image by freely moving the corners.") - .setIO(VALUE_TYPE.surface).setTags(["warp corner"]); - // addNodeObject(transform, "Perspective Warp",Node_Warp_Perspective, "Warp image by modifying perspective.").setTags(["warp perspective"]); - addNodeObject(transform, "Skew", Node_Skew, "Skew image horizontally, or vertically.") - .setIO(VALUE_TYPE.surface).setTags(["shear"]); - // addNodeObject(transform, "Grid Warp", Node_Grid_Warp, "Wrap image by modifying mesh lacttice."); - addNodeObject(transform, "Bend", Node_Bend, "Warp an image into a predefined shape.") - .setIO(VALUE_TYPE.surface).setVersion(11650); - addNodeObject(transform, "Mesh Warp", Node_Mesh_Warp, "Wrap image by converting it to mesh, and using control points.") - .setIO(VALUE_TYPE.surface); - addNodeObject(transform, "Polar", Node_Polar, "Convert image to polar coordinate.") - .setIO(VALUE_TYPE.surface); - addNodeObject(transform, "Area Warp", Node_Wrap_Area, "Wrap image to fit an area value.") - .setIO(VALUE_TYPE.surface); - - ds_list_add(transform, "Others"); - addNodeObject(transform, "Composite", Node_Composite, "Combine multiple images with controllable position, rotation, scale.") - .setIO(VALUE_TYPE.surface).setTags(["merge"]); - addNodeObject(transform, "Nine Slice", Node_9Slice, "Cut image into 3x3 parts, and scale/repeat only the middle part.") - .setIO(VALUE_TYPE.surface).setTags(["9 slice", "splice", "nine patch"]); - addNodeObject(transform, "Padding", Node_Padding, "Make image bigger by adding space in 4 directions.") - .setIO(VALUE_TYPE.surface); - addNodeObject(transform, "Tile Random", Node_Tile_Random, "Repeat images on a larger surface randomly.") - .setIO(VALUE_TYPE.surface).setVersion(11780); -#endregion - -#region filter - var filter = ds_list_create(); - addNodeCatagory("Filter", filter); - - ds_list_add(filter, "Combines"); - addNodeObject(filter, "Blend", Node_Blend, "Blend 2 images using different blend modes.") - .setIO(VALUE_TYPE.surface).setBuild(Node_create_Blend).setTags(global.node_blend_keys); - addNodeObject(filter, "RGBA Combine", Node_Combine_RGB, "Combine 4 image in to one. Each image use to control RGBA channel.") - .setIO(VALUE_TYPE.surface).setVersion(1070); - addNodeObject(filter, "HSV Combine", Node_Combine_HSV, "Combine 4 image in to one. Each image use to control HSVA channel.") - .setIO(VALUE_TYPE.surface).setVersion(1070); - addNodeObject(filter, "Override Channel", Node_Override_Channel, "Replace RGBA value of one surface with another.") - .setIO(VALUE_TYPE.surface).setVersion(11640); - - ds_list_add(filter, "Blurs"); - ds_list_add(filter, "/Kernel-based"); - addNodeObject(filter, "Blur", Node_Blur, "Blur image smoothly.") - .setIO(VALUE_TYPE.surface).setTags(["gaussian blur"]); - addNodeObject(filter, "Non-Uniform Blur", Node_Blur_Simple, "Blur image using simpler algorithm. Allowing for variable blur strength.") - .setIO(VALUE_TYPE.surface).setVersion(1070); - addNodeObject(filter, "Contrast Blur", Node_Blur_Contrast, "Blur only pixel of a similiar color.") - .setIO(VALUE_TYPE.surface); - addNodeObject(filter, "Box Blur", Node_Blur_Box, "Blur pixel in square area uniformly.") - .setIO(VALUE_TYPE.surface).setVersion(1_18_06_2); - addNodeObject(filter, "Shape Blur", Node_Blur_Shape, "Blur image using another image as blur map.") - .setIO(VALUE_TYPE.surface).setVersion(11650); - addNodeObject(filter, "High Pass", Node_High_Pass, "Apply high pass filter") - .setIO(VALUE_TYPE.surface).setTags(["sharpen"]).setVersion(1_18_01_0); - ds_list_add(filter, "/Linear"); - addNodeObject(filter, "Directional Blur", Node_Blur_Directional, "Blur image given a direction.") - .setIO(VALUE_TYPE.surface).setTags(["motion blur"]); - addNodeObject(filter, "Slope Blur", Node_Blur_Slope, "Blur along a gradient of a slope map.") - .setIO(VALUE_TYPE.surface).setTags(["motion blur"]).setVersion(11640); - addNodeObject(filter, "Zoom Blur", Node_Blur_Zoom, "Blur image by zooming in/out from a mid point.") - .setIO(VALUE_TYPE.surface); - addNodeObject(filter, "Radial Blur", Node_Blur_Radial, "Blur image by rotating around a mid point.") - .setIO(VALUE_TYPE.surface).setVersion(1110); - addNodeObject(filter, "Path Blur", Node_Blur_Path, "Blur pixel along path.") - .setIO(VALUE_TYPE.surface).setVersion(11750); - addNodeObject(filter, "Smear", Node_Smear, "Stretch out brighter pixel in one direction.") - .setIO(VALUE_TYPE.surface).setVersion(11670); - ds_list_add(filter, "/Non-Linear"); - addNodeObject(filter, "Lens Blur", Node_Blur_Bokeh, "Create bokeh effect. Blur lighter color in a lens-like manner.") - .setIO(VALUE_TYPE.surface).setTags(["bokeh"]).setVersion(1110); - addNodeObject(filter, "Average", Node_Average, "Average color of every pixels in the image.") - .setIO(VALUE_TYPE.surface).setVersion(1110); - addNodeObject(filter, "Kuwahara", Node_Kuwahara, "Apply Kuwahara filter. Creating a watercolor-like effect.") - .setIO(VALUE_TYPE.surface).setVersion(11660); - addNodeObject(filter, "Brush", Node_Brush_Linear, "Apply brush effect.") - .setIO(VALUE_TYPE.surface); - - ds_list_add(filter, "Warps"); - ds_list_add(filter, "/Effects"); - addNodeObject(filter, "Mirror", Node_Mirror, "Reflect the image along a reflection line.") - .setIO(VALUE_TYPE.surface); - addNodeObject(filter, "Polar Mirror", Node_Mirror_Polar, "Reflect the image around multiple radial reflection lines."); - addNodeObject(filter, "Twirl", Node_Twirl, "Twist the image around a mid point.") - .setIO(VALUE_TYPE.surface).setTags(["twist"]); - addNodeObject(filter, "Dilate", Node_Dilate, "Expand the image around a mid point.") - .setIO(VALUE_TYPE.surface).setTags(["inflate"]); - addNodeObject(filter, "Spherize", Node_Spherize, "Wrap a texture on to sphere.") - .setIO(VALUE_TYPE.surface).setVersion(11630); - addNodeObject(filter, "Displace", Node_Displace, "Distort image using another image as a map.") - .setIO(VALUE_TYPE.surface).setTags(["distort"]); - addNodeObject(filter, "Morph Surface", Node_Morph_Surface, "Morph pixel between two surfaces.") - .setIO(VALUE_TYPE.surface).setVersion(1141); - addNodeObject(filter, "Liquefy", Node_Liquefy, "Distort image using variety of tools.") - .setIO(VALUE_TYPE.surface).setVersion(1_18_02_0); - ds_list_add(filter, "/Mappers"); - addNodeObject(filter, "Texture Remap", Node_Texture_Remap, "Remap image using texture map. Where red channel control x position and green channel control y position.") - .setIO(VALUE_TYPE.surface); - addNodeObject(filter, "Time Remap", Node_Time_Remap, "Remap image using texture as time map. Where brighter pixel in time map means using pixel from an older frame.") - .setIO(VALUE_TYPE.surface); - addNodeObject(filter, "Shape Map", Node_Shape_Map, "Map image into shapes.") - .setIO(VALUE_TYPE.surface).setVersion(11660); - - ds_list_add(filter, "Effects"); - ds_list_add(filter, "/Basics"); - addNodeObject(filter, "Outline", Node_Outline, "Add border to the image.") - .setIO(VALUE_TYPE.surface).setTags(["border"]); - addNodeObject(filter, "Glow", Node_Glow, "Apply glow to the border of the image.") - .setIO(VALUE_TYPE.surface); - addNodeObject(filter, "Shadow", Node_Shadow, "Apply shadow behind the image.") - .setIO(VALUE_TYPE.surface); - addNodeObject(filter, "Blobify", Node_Blobify, "Round off sharp corner in BW image by bluring and thresholding.") - .setIO(VALUE_TYPE.surface).setVersion(11650); - addNodeObject(filter, "SDF", Node_SDF, "Create signed distance field using jump flooding algorithm.") - .setIO(VALUE_TYPE.surface).setVersion(1130); - addNodeObject(filter, "Replace Image", Node_Surface_Replace, "Replace instances of an image with a new one.") - .setIO(VALUE_TYPE.surface).setTags(["image replace"]).setVersion(1140); - ds_list_add(filter, "/Post Processing"); - addNodeObject(filter, "Bloom", Node_Bloom, "Apply bloom effect, blurring and brighten the bright part of the image.") - .setIO(VALUE_TYPE.surface); - addNodeObject(filter, "Blend Edge", Node_Blend_Edge, "Blend the edges of an image to create tilable patterns.") - .setIO(VALUE_TYPE.surface).setVersion(11740); - addNodeObject(filter, "Chromatic Aberration", Node_Chromatic_Aberration, "Apply chromatic aberration effect to the image."); - addNodeObject(filter, "FXAA", Node_FXAA, "Apply fast approximate anti-aliasing to te image.") - .setIO(VALUE_TYPE.surface).setTags(["anti aliasing"]); - addNodeObject(filter, "Vignette", Node_Vignette, "Apply vignette effect to the border.") - .setIO(VALUE_TYPE.surface).setVersion(11630); - addNodeObject(filter, "JPEG", Node_JPEG, "Apply JPEG compression to the image.") - .setIO(VALUE_TYPE.surface).setVersion(11730); - addNodeObject(filter, "Grain", Node_Grain, "Add noise pattern to the image.") - .setIO(VALUE_TYPE.surface).setVersion(11770); - ds_list_add(filter, "/Convolutions"); - addNodeObject(filter, "Convolution", Node_Convolution, "Apply convolution operation on each pixel using a custom 3x3 kernel.") - .setIO(VALUE_TYPE.surface).setTags(["kernel"]).setVersion(1090); - addNodeObject(filter, "Edge Detect", Node_Edge_Detect, "Edge detect by applying Sobel, Prewitt, or Laplacian kernel.") - .setIO(VALUE_TYPE.surface); - addNodeObject(filter, "Local Analyze", Node_Local_Analyze, "Apply non-linear operation (minimum, maximum) on each pixel locally.") - .setIO(VALUE_TYPE.surface).setVersion(1110); - addNodeObject(filter, "Erode", Node_Erode, "Remove pixel that are close to the border of the image.") - .setIO(VALUE_TYPE.surface); - addNodeObject(filter, "Round Corner", Node_Corner, "Round out sharp corner of the image.") - .setIO(VALUE_TYPE.surface).setVersion(1110); - ds_list_add(filter, "/Pixel Operations"); - addNodeObject(filter, "Pixel Math", Node_Pixel_Math, "Apply mathematical operation directly on RGBA value.") - .setIO(VALUE_TYPE.surface).setBuild(Node_create_Pixel_Math).setTags(global.node_math_keys).setVersion(1_18_02_0); - addNodeObject(filter, "Pixel Expand", Node_Atlas, "Replace transparent pixel with the closest non-transparent pixel.") - .setIO(VALUE_TYPE.surface).setTags(["atlas"]); - addNodeObject(filter, "Pixel Cloud", Node_Pixel_Cloud, "Displace each pixel of the image randomly.") - .setIO(VALUE_TYPE.surface); - addNodeObject(filter, "Pixel Sort", Node_Pixel_Sort, "Sort pixel by brightness in horizontal, or vertial axis.") - .setIO(VALUE_TYPE.surface); - addNodeObject(filter, "Shuffle", Node_Shuffle, "Shuffle image while keeping pixel colors.") - .setIO(VALUE_TYPE.surface).setVersion(1_18_05_6); - ds_list_add(filter, "/Lights"); - addNodeObject(filter, "2D Light", Node_2D_light, "Apply different shaped light on the image.") - .setIO(VALUE_TYPE.surface); - addNodeObject(filter, "Cast Shadow", Node_Shadow_Cast, "Apply light that casts shadow.") - .setIO(VALUE_TYPE.surface).setTags(["raycast"]).setVersion(1100); - ds_list_add(filter, "/Animations"); - addNodeObject(filter, "Interlace", Node_Interlaced, "Apply interlace effect to an image.") - .setIO(VALUE_TYPE.surface).setVersion(11760); - addNodeObject(filter, "Trail", Node_Trail, "Blend animation by filling in the pixel 'in-between' two or more frames.") - .setIO(VALUE_TYPE.surface).setVersion(1130); - - ds_list_add(filter, "Colors"); - ds_list_add(filter, "/Replacements"); - addNodeObject(filter, "Replace Palette", Node_Color_replace, "Match image to a palette then remap it to another palette.") - .setIO(VALUE_TYPE.surface).setTags(["isolate colors", "select colors", "palette swap", "colors replace"]); - addNodeObject(filter, "Replace Colors", Node_Colors_Replace, "Replace selected colors with a new one.") - .setIO(VALUE_TYPE.surface).setTags(["isolate colors", "select color", "palette swap"]); - addNodeObject(filter, "Remove Color", Node_Color_Remove, "Remove color that match a palette.") - .setIO(VALUE_TYPE.surface).setTags(["delete color"]); - addNodeObject(filter, "Separate Color", Node_Color_Separate, "Generate array of surfaces for each color.") - .setIO(VALUE_TYPE.surface); - ds_list_add(filter, "/Colorizers"); - addNodeObject(filter, "Colorize", Node_Colorize, "Map brightness of a pixel to a color from a gradient.") - .setIO(VALUE_TYPE.surface).setTags(["recolor"]); - addNodeObject(filter, "Posterize", Node_Posterize, "Reduce and remap color to match a palette.") - .setIO(VALUE_TYPE.surface); - addNodeObject(filter, "Dither", Node_Dither, "Reduce color and use dithering to preserve original color.") - .setIO(VALUE_TYPE.surface); - addNodeObject(filter, "Error Diffuse Dither", Node_Dither_Diffuse, "Dither image using error diffusion algorithm.") - .setIO(VALUE_TYPE.surface).setVersion(1_18_05_1); - addNodeObject(filter, "Palette Shift", Node_Palette_Shift, "Shift the order of color in palette.") - .setIO(VALUE_TYPE.surface).setVersion(1147); - ds_list_add(filter, "/Conversions"); - addNodeObject(filter, "BW", Node_BW, "Convert color image to black and white.") - .setIO(VALUE_TYPE.surface).setTags(["black and white"]); - addNodeObject(filter, "Greyscale", Node_Greyscale, "Convert color image to greyscale.") - .setIO(VALUE_TYPE.surface).setTags(["grayscale"]); - addNodeObject(filter, "RGBA Extract", Node_RGB_Channel, "Extract RGBA channel on an image, each channel becomes its own image.") - .setIO(VALUE_TYPE.surface).setTags(["channel extract"]); - addNodeObject(filter, "HSV Extract", Node_HSV_Channel, "Extract HSVA channel on an image, each channel becomes its own image.") - .setIO(VALUE_TYPE.surface).setVersion(1070); - addNodeObject(filter, "Alpha to Grey", Node_Alpha_Grey, "Convert alpha value into solid greyscale.") - .setIO(VALUE_TYPE.surface).setTags(["alpha to gray"]); - addNodeObject(filter, "Grey to Alpha", Node_Grey_Alpha, "Convert greyscale to alpha value.") - .setIO(VALUE_TYPE.surface).setTags(["gray to alpha"]); - ds_list_add(filter, "/Adjustments"); - addNodeObject(filter, "Color Adjust", Node_Color_adjust, "Adjust brightness, contrast, hue, saturation, value, alpha, and blend image with color.") - .setIO(VALUE_TYPE.surface).setTags(["brightness", "contrast", "hue", "saturation", "value", "color blend", "alpha"]); - addNodeObject(filter, "Level", Node_Level, "Adjust brightness of an image by changing its brightness range.") - .setIO(VALUE_TYPE.surface); - addNodeObject(filter, "Level Selector", Node_Level_Selector, "Isolate part of the image that falls in the selected brightness range.") - .setIO(VALUE_TYPE.surface); - addNodeObject(filter, "Curve", Node_Curve, "Adjust brightness of an image using curves.") - .setIO(VALUE_TYPE.surface).setVersion(1120); - addNodeObject(filter, "HSV Curve", Node_Curve_HSV, "Adjust hsv values of an image using curves.") - .setIO(VALUE_TYPE.surface).setVersion(11720); - addNodeObject(filter, "Invert", Node_Invert, "Invert color.") - .setIO(VALUE_TYPE.surface).setTags(["negate"]); - addNodeObject(filter, "Threshold", Node_Threshold, "Set a threshold where pixel darker will becomes black, and brighter to white. Also works with alpha.") - .setIO(VALUE_TYPE.surface).setVersion(1080); - addNodeObject(filter, "Alpha Cutoff", Node_Alpha_Cutoff, "Remove pixel with low alpha value.") - .setIO(VALUE_TYPE.surface).setTags(["remove alpha"]); - addNodeObject(filter, "Normalize", Node_Normalize, "Normalize image ranges (brightness, RGB channels) in to [0, 1] range.") - .setIO(VALUE_TYPE.surface).setVersion(11710); - addNodeObject(filter, "Gamma Map", Node_Gamma_Map, "Apply gamma approximation (pow(2.2)) to an image.") - .setIO(VALUE_TYPE.surface).setTags(["srgb"]).setVersion(11660); - addNodeObject(filter, "ACE", Node_Tonemap_ACE, "Apply ACE tonemapping.") - .setIO(VALUE_TYPE.surface).setVersion(11710); - - ds_list_add(filter, "Fixes"); - addNodeObject(filter, "De-Corner", Node_De_Corner, "Attempt to remove single pixel corner from the image.") - .setIO(VALUE_TYPE.surface).setTags(["decorner"]); - addNodeObject(filter, "De-Stray", Node_De_Stray, "Attempt to remove orphan pixel.") - .setIO(VALUE_TYPE.surface).setTags(["destray"]); -#endregion - -#region d3d - var d3d = ds_list_create(); - addNodeCatagory("3D", d3d); - ds_list_add(d3d, "2D Operations"); - addNodeObject(d3d, "Transform 3D", Node_3D_Transform_Image, "Transform image in 3D space") - .setIO(VALUE_TYPE.surface).setTags(["3d transform"]).setVersion(11600); - addNodeObject(d3d, "Normal", Node_Normal, "Create normal map using greyscale value as height.") - .setIO(VALUE_TYPE.surface); - addNodeObject(d3d, "Normal Light", Node_Normal_Light, "Light up the image using normal mapping.") - .setIO(VALUE_TYPE.surface); - addNodeObject(d3d, "Bevel", Node_Bevel, "Apply 2D bevel on the image.") - .setIO(VALUE_TYPE.surface); - addNodeObject(d3d, "Sprite Stack", Node_Sprite_Stack, "Create sprite stack either from repeating a single image or stacking different images using array.") - .setIO(VALUE_TYPE.surface); - addNodeObject(d3d, "Ambient Occlusion", Node_Ambient_Occlusion, "Apply simple 2D AO effect using height map.") - .setIO(VALUE_TYPE.surface).setTags(["ao"]); - - ds_list_add(d3d, "Scenes"); - addNodeObject(d3d, "3D Camera", Node_3D_Camera, "Create 3D camera that render scene to surface.") - .setIO(VALUE_TYPE.d3Mesh, VALUE_TYPE.surface).setVersion(11510); - addNodeObject(d3d, "3D Camera Set", Node_3D_Camera_Set, "3D camera with built-in key and fill directional lights.") - .setIO(VALUE_TYPE.d3Mesh, VALUE_TYPE.surface).setVersion(11571); - addNodeObject(d3d, "3D Scene", Node_3D_Scene, "Combine multiple 3D objects into a single junction.") - .setIO(VALUE_TYPE.d3Mesh).setVersion(11510); - - ds_list_add(d3d, "Materials"); - addNodeObject(d3d, "3D Material", Node_3D_Material, "Create 3D material with adjustable parameters.") - .setIO(VALUE_TYPE.d3Mesh, VALUE_TYPE.surface).setVersion(11510); - - ds_list_add(d3d, "Meshes"); - ds_list_add(d3d, "/Creators"); - addNodeObject(d3d, "3D Object", Node_3D_Mesh_Obj, "Load .obj file from your computer as a 3D object.") - .setIO(VALUE_TYPE.d3Mesh).setBuild(Node_create_3D_Obj).setVersion(11510); - addNodeObject(d3d, "3D Plane", Node_3D_Mesh_Plane, "Put 2D image on a plane in 3D space.") - .setIO(VALUE_TYPE.d3Mesh).setVersion(11510); - addNodeObject(d3d, "3D Cube", Node_3D_Mesh_Cube, "Create 3D cube mesh.") - .setIO(VALUE_TYPE.d3Mesh).setVersion(11510); - addNodeObject(d3d, "3D Cylinder", Node_3D_Mesh_Cylinder, "Create 3D cylinder mesh") - .setIO(VALUE_TYPE.d3Mesh).setVersion(11510); - addNodeObject(d3d, "3D UV Sphere", Node_3D_Mesh_Sphere_UV, "Create 3D uv sphere mesh") - .setIO(VALUE_TYPE.d3Mesh).setVersion(11510); - addNodeObject(d3d, "3D Icosphere", Node_3D_Mesh_Sphere_Ico, "Create 3D icosphere mesh") - .setIO(VALUE_TYPE.d3Mesh).setVersion(11510); - addNodeObject(d3d, "3D Cone", Node_3D_Mesh_Cone, "Create 3D cone mesh") - .setIO(VALUE_TYPE.d3Mesh).setVersion(11510); - addNodeObject(d3d, "3D Torus", Node_3D_Mesh_Torus, "Create 3D torus mesh") - .setIO(VALUE_TYPE.d3Mesh).setVersion(1_18_01_0); - addNodeObject(d3d, "3D Terrain", Node_3D_Mesh_Terrain, "Create 3D terrain from height map.") - .setIO(VALUE_TYPE.d3Mesh, VALUE_TYPE.surface).setVersion(11560); - addNodeObject(d3d, "3D Wall Builder", Node_3D_Mesh_Wall_Builder, "Create 3D wall be extruding 2D path.") - .setIO(VALUE_TYPE.d3Mesh, VALUE_TYPE.pathnode).setVersion(1_18_01_0); - addNodeObject(d3d, "Surface Extrude", Node_3D_Mesh_Extrude, "Extrude 2D image into 3D object.") - .setIO(VALUE_TYPE.d3Mesh, VALUE_TYPE.surface).setVersion(11510); - addNodeObject(d3d, "Path Extrude", Node_3D_Mesh_Path_Extrude, "Extrude path into 3D object.") - .setIO(VALUE_TYPE.d3Mesh, VALUE_TYPE.pathnode).setVersion(11750); - ds_list_add(d3d, "/Exporters"); - addNodeObject(d3d, "Mesh Export", Node_3D_Mesh_Export, "Export 3D mesh as .obj file") - .setIO(VALUE_TYPE.d3Mesh).setVersion(11740); - addNodeObject(d3d, "Slice Stack", Node_3D_Mesh_Stack_Slice, "Slice 3D object into array of 2d images.") - .setIO(VALUE_TYPE.d3Mesh).setVersion(11750); - - ds_list_add(d3d, "Light"); - addNodeObject(d3d, "Directional Light", Node_3D_Light_Directional, "Create directional light directed at the origin point.") - .setIO(VALUE_TYPE.d3Mesh).setVersion(11510); - addNodeObject(d3d, "Point Light", Node_3D_Light_Point, "Create point light to illuminate surrounding area.") - .setIO(VALUE_TYPE.d3Mesh).setVersion(11510); - - ds_list_add(d3d, "Modify"); - ds_list_add(d3d, "/Meshes"); - addNodeObject(d3d, "Transform", Node_3D_Transform, "Transform 3D object.") - .setIO(VALUE_TYPE.d3Mesh).setVersion(11570); - addNodeObject(d3d, "Transform Scene", Node_3D_Transform_Scene, "Transform 3D scene, accepts array of transformations for each objects.") - .setIO(VALUE_TYPE.d3Mesh).setVersion(11570); - addNodeObject(d3d, "Discretize vertex", Node_3D_Round_Vertex, "Round out vertex position to a specified step.") - .setIO(VALUE_TYPE.d3Mesh).setVersion(11560); - addNodeObject(d3d, "3D Displace", Node_3D_Displace, "Shift vertex of 3D mesh using 2D map.") - .setIO(VALUE_TYPE.d3Mesh).setVersion(1_18_01_0); - addNodeObject(d3d, "3D Subdivide", Node_3D_Subdivide, "Subdivide faces in mesh.") - .setIO(VALUE_TYPE.d3Mesh).setVersion(1_18_03_0); - ds_list_add(d3d, "/Instances"); - addNodeObject(d3d, "3D Repeat", Node_3D_Repeat, "Repeat the same 3D mesh multiple times.") - .setIO(VALUE_TYPE.d3Mesh).setVersion(11510); - // addNodeObject(d3d, "3D Instancer", Node_3D_Instancer).setVersion(11560); - // addNodeObject(d3d, "3D Particle", Node_3D_Particle).setVersion(11560); - ds_list_add(d3d, "/Materials"); - addNodeObject(d3d, "Set Material", Node_3D_Set_Material, "Replace mesh material with a new one.") - .setIO(VALUE_TYPE.d3Mesh).setVersion(11560); - addNodeObject(d3d, "UV Remap", Node_3D_UV_Remap, "Remap UV map using plane.") - .setIO(VALUE_TYPE.d3Mesh).setVersion(11570); - - ds_list_add(d3d, "Points"); - addNodeObject(d3d, "Point Affector", Node_3D_Point_Affector, "Generate array of 3D points interpolating between two values based on the distance.") - .setIO(VALUE_TYPE.float).setVersion(11570); - - ds_list_add(d3d, "Ray Marching"); - addNodeObject(d3d, "RM Primitive", Node_RM_Primitive, "Create SDF object.") - .setIO(VALUE_TYPE.surface).setBuild(Node_create_RM_Primitive).setTags(global.node_rm_primitive_keys).setVersion(11720); - addNodeObject(d3d, "RM Combine", Node_RM_Combine, "Combine 2 SDF objects using boolean operation.") - .setIO(VALUE_TYPE.surface).setTags(["ray marching", "rm boolean"]).setVersion(11740); - addNodeObject(d3d, "RM Render", Node_RM_Render, "Render SDF object.") - .setIO(VALUE_TYPE.surface).setTags(["ray marching"]).setVersion(11740); - addNodeObject(d3d, "RM Terrain", Node_RM_Terrain, "Generate SDF image from height map.") - .setIO(VALUE_TYPE.surface).setTags(["ray marching"]).setVersion(11720); - addNodeObject(d3d, "RM Cloud", Node_RM_Cloud, "Generate distance field cloud texture.") - .setIO(VALUE_TYPE.surface); -#endregion - -#region generator - var generator = ds_list_create(); - addNodeCatagory("Generate", generator); - ds_list_add(generator, "Colors"); - addNodeObject(generator, "Solid", Node_Solid, "Create image of a single color.") - .setIO(VALUE_TYPE.surface); - addNodeObject(generator, "Draw Gradient", Node_Gradient, "Create image from gradient.") - .setIO(VALUE_TYPE.surface); - addNodeObject(generator, "Draw 4 Points Gradient", Node_Gradient_Points, "Create image from 4 color points.") - .setIO(VALUE_TYPE.surface); - addNodeObject(generator, "Sky", Node_Sky, "Generate sky texture using different model.") - .setIO(VALUE_TYPE.surface); - - ds_list_add(generator, "Drawer"); - addNodeObject(generator, "Draw Line", Node_Line, "Draw line on an image. Connect path data to it to draw line from path.") - .setIO(VALUE_TYPE.surface); - addNodeObject(generator, "Draw Text", Node_Text, "Draw text on an image.") - .setIO(VALUE_TYPE.surface); - addNodeObject(generator, "Draw Shape", Node_Shape, "Draw simple shapes using signed distance field.") - .setIO(VALUE_TYPE.surface).setBuild(Node_create_Shape).setTags(global.node_shape_keys); - addNodeObject(generator, "Draw Shape Polygon", Node_Shape_Polygon, "Draw polygonal shapes.") - .setIO(VALUE_TYPE.surface).setVersion(1130); - addNodeObject(generator, "Draw Random Shape", Node_Random_Shape, "Generate random shape, use for testing purposes.") - .setIO(VALUE_TYPE.surface).setVersion(1147); - addNodeObject(generator, "Draw Bar / Graph", Node_Plot_Linear, "Plot graph or bar chart from array of number.") - .setIO(VALUE_TYPE.surface).setBuild(Node_create_Plot_Linear).setTags(global.node_plot_linear_keys).setVersion(1144); - addNodeObject(generator, "Draw Path Profile", Node_Path_Profile, "Fill-in an area on one side of a path.") - .setIO(VALUE_TYPE.surface).setVersion(11660); - addNodeObject(generator, "Draw Cross Section", Node_Cross_Section, "Map the brightness of pixels on a linear axis into a surface.") - .setIO(VALUE_TYPE.surface).setVersion(11710); - addNodeObject(generator, "Interpret Number", Node_Interpret_Number, "Convert array of number into surface.") - .setIO(VALUE_TYPE.surface).setVersion(11530); - addNodeObject(generator, "Pixel Builder", Node_Pixel_Builder, "Will break, do not create. please. Why is it here??") - .setIO(VALUE_TYPE.surface).setVersion(11540); - addNodeObject(generator, "Tile Drawer", Node_Tile_Drawer, "Draw using tileset.") - .setIO(VALUE_TYPE.surface).setVersion(1_18_03_0); - - ds_list_add(generator, "Noises"); - ds_list_add(generator, "/Basics"); - addNodeObject(generator, "Noise", Node_Noise, "Generate white noise.") - .setIO(VALUE_TYPE.surface); - addNodeObject(generator, "Perlin Noise", Node_Perlin, "Generate perlin noise.") - .setIO(VALUE_TYPE.surface); - addNodeObject(generator, "Simplex Noise", Node_Noise_Simplex, "Generate simplex noise, similiar to perlin noise with better fidelity but non-tilable.") - .setIO(VALUE_TYPE.surface).setTags(["perlin"]).setVersion(1080); - addNodeObject(generator, "Cellular Noise", Node_Cellular, "Generate voronoi pattern.") - .setIO(VALUE_TYPE.surface).setTags(["voronoi", "worley"]); - addNodeObject(generator, "Anisotropic Noise", Node_Noise_Aniso, "Generate anisotropic noise.") - .setIO(VALUE_TYPE.surface); - // addNodeObject(generator, "Blue Noise", Node_Noise_Blue, "Generate blue noise texture").setVersion(1_18_06_2); - addNodeObject(generator, "Extra Perlins", Node_Perlin_Extra, "Random perlin noise made with different algorithms.") - .setIO(VALUE_TYPE.surface).setTags(["noise"]); - addNodeObject(generator, "Extra Voronoi", Node_Voronoi_Extra, "Random voronoi noise made with different algorithms.") - .setIO(VALUE_TYPE.surface).setTags(["noise"]); - ds_list_add(generator, "/Artistics"); - addNodeObject(generator, "Fold Noise", Node_Fold_Noise, "Generate cloth fold noise") - .setIO(VALUE_TYPE.surface).setVersion(11650); - addNodeObject(generator, "Strand Noise", Node_Noise_Strand, "Generate random srtands noise.") - .setIO(VALUE_TYPE.surface).setVersion(11650); - addNodeObject(generator, "Gabor Noise", Node_Gabor_Noise, "Generate Gabor noise") - .setIO(VALUE_TYPE.surface); - addNodeObject(generator, "Shard Noise", Node_Shard_Noise, "Generate glass shard-looking noise") - .setIO(VALUE_TYPE.surface); - addNodeObject(generator, "Wavelet Noise", Node_Wavelet_Noise, "Generate wavelet noise") - .setIO(VALUE_TYPE.surface); - addNodeObject(generator, "Caustic", Node_Caustic, "Generate caustic noise") - .setIO(VALUE_TYPE.surface); - addNodeObject(generator, "Bubble Noise", Node_Noise_Bubble, "Generate bubble noise") - .setIO(VALUE_TYPE.surface); - addNodeObject(generator, "Flow Noise", Node_Flow_Noise, "Generate fluid flow noise") - .setIO(VALUE_TYPE.surface); - addNodeObject(generator, "Cristal Noise", Node_Noise_Cristal, "Generate Cristal noise") - .setIO(VALUE_TYPE.surface); - addNodeObject(generator, "Honeycomb Noise", Node_Honeycomb_Noise, "Generate honeycomb noise") - .setIO(VALUE_TYPE.surface); - - ds_list_add(generator, "Patterns"); - ds_list_add(generator, "/Basics"); - addNodeObject(generator, "Stripe", Node_Stripe, "Generate stripe pattern.") - .setIO(VALUE_TYPE.surface); - addNodeObject(generator, "Zigzag", Node_Zigzag, "Generate zigzag pattern.") - .setIO(VALUE_TYPE.surface); - addNodeObject(generator, "Checker", Node_Checker, "Generate checkerboard pattern.") - .setIO(VALUE_TYPE.surface); - ds_list_add(generator, "/Grids"); - addNodeObject(generator, "Grid", Node_Grid, "Generate grid pattern.") - .setIO(VALUE_TYPE.surface).setTags(["tile", "mosaic"]); - addNodeObject(generator, "Triangular Grid", Node_Grid_Tri, "Generate triangular grid pattern.") - .setIO(VALUE_TYPE.surface); - addNodeObject(generator, "Hexagonal Grid", Node_Grid_Hex, "Generate hexagonal grid pattern.") - .setIO(VALUE_TYPE.surface); - addNodeObject(generator, "Pentagonal Grid", Node_Grid_Pentagonal, "Generate Pentagonal grid pattern.") - .setIO(VALUE_TYPE.surface); - ds_list_add(generator, "/Tiles"); - addNodeObject(generator, "Pytagorean Tile", Node_Pytagorean_Tile, "Generate Pytagorean tile pattern.") - .setIO(VALUE_TYPE.surface); - addNodeObject(generator, "Herringbone Tile", Node_Herringbone_Tile, "Generate Herringbone tile pattern.") - .setIO(VALUE_TYPE.surface); - addNodeObject(generator, "Random Tile", Node_Random_Tile, "Generate Random tile pattern.") - .setIO(VALUE_TYPE.surface); - ds_list_add(generator, "/Others"); - addNodeObject(generator, "Box Pattern", Node_Box_Pattern, "Generate square-based patterns.") - .setIO(VALUE_TYPE.surface).setVersion(11750); - addNodeObject(generator, "Quasicrystal", Node_Quasicrystal, "Generate Quasicrystal pattern.") - .setIO(VALUE_TYPE.surface).setVersion(11660); - addNodeObject(generator, "Pixel Sampler", Node_Pixel_Sampler, "Map image on to each individual pixels of another image.") - .setIO(VALUE_TYPE.surface).setVersion(11730); - addNodeObject(generator, "Julia", Node_Julia_Set, "Generate Julia fractal.") - .setIO(VALUE_TYPE.surface).setVersion(1_18_05_6); - - ds_list_add(generator, "Populate"); - addNodeObject(generator, "Repeat", Node_Repeat, "Repeat image multiple times linearly, or in grid pattern.") - .setIO(VALUE_TYPE.surface).setBuild(Node_create_Repeat).setTags(global.node_repeat_keys).setVersion(1100); - addNodeObject(generator, "Scatter", Node_Scatter, "Scatter image randomly multiple times.") - .setIO(VALUE_TYPE.surface); - addNodeObject(generator, "Repeat Texture", Node_Repeat_Texture, "Repeat texture over larger surface without repeating patterns.") - .setIO(VALUE_TYPE.surface); - - ds_list_add(generator, "Simulation"); - addNodeObject(generator, "Particle", Node_Particle, "Generate particle effect.") - .setIO(VALUE_TYPE.surface); - addNodeObject(generator, "VFX", Node_VFX_Group_Inline, "Create VFX group, which generate particles that can be manipulated using different force nodes.") - .setIO(VALUE_TYPE.surface).setSpr(s_node_vfx); - addNodeObject(generator, "RigidSim", Node_Rigid_Group_Inline, "Create group for rigidbody simulation.") - .setIO(VALUE_TYPE.surface).setSpr(s_node_rigid).setVersion(1110); - addNodeObject(generator, "FLIP Fluid", Node_FLIP_Group_Inline, "Create group for fluid simulation.") - .setIO(VALUE_TYPE.surface).setSpr(s_node_flip_group).setVersion(11620); - addNodeObject(generator, "SmokeSim", Node_Smoke_Group_Inline, "Create group for smoke simulation.") - .setIO(VALUE_TYPE.surface).setSpr(s_node_smoke_group).setVersion(1120); - addNodeObject(generator, "StrandSim", Node_Strand_Group_Inline, "Create group for hair simulation.") - .setIO(VALUE_TYPE.surface).setSpr(s_node_strand).setTags(["hair"]).setVersion(1140); - addNodeObject(generator, "Diffuse", Node_Diffuse, "Simulate diffusion like simulation.") - .setIO(VALUE_TYPE.surface).setVersion(11640); - addNodeObject(generator, "Reaction Diffusion", Node_RD, "Simulate reaction diffusion effect.") - .setIO(VALUE_TYPE.surface).setSpr(s_node_reaction_diffusion).setVersion(11630); - - ds_list_add(generator, "Region"); - addNodeObject(generator, "Separate Shape", Node_Seperate_Shape, "Separate disconnected pixel each into an image in an image array.") - .setIO(VALUE_TYPE.surface); - addNodeObject(generator, "Region Fill", Node_Region_Fill, "Fill connected pixel with colors.") - .setIO(VALUE_TYPE.surface).setVersion(1147); - addNodeObject(generator, "Flood Fill", Node_Flood_Fill, "Filled connected pixel given position and color.") - .setIO(VALUE_TYPE.surface).setVersion(1133); - - ds_list_add(generator, "MK Effects"); - addNodeObject(generator, "MK Rain", Node_MK_Rain, "Generate deterministic rain.") - .setIO(VALUE_TYPE.surface).setVersion(11600); - addNodeObject(generator, "MK GridBalls", Node_MK_GridBalls, "Generate controllable grid of spheres.") - .setIO(VALUE_TYPE.surface).setVersion(11600); - addNodeObject(generator, "MK GridFlip", Node_MK_GridFlip, "Generate controllable grid of planes.") - .setIO(VALUE_TYPE.surface).setVersion(11600); - addNodeObject(generator, "MK Saber", Node_MK_Saber, "Generate glowing saber from 2 points.") - .setIO(VALUE_TYPE.surface).setVersion(11600); - addNodeObject(generator, "MK Tile", Node_MK_Tile, "Generate game engines-ready tileset.") - .setIO(VALUE_TYPE.surface).setVersion(11600); - addNodeObject(generator, "MK Flag", Node_MK_Flag, "Generate waving flag.") - .setIO(VALUE_TYPE.surface).setVersion(11600); - addNodeObject(generator, "MK Brownian", Node_MK_Brownian, "Generate random particle.") - .setIO(VALUE_TYPE.surface).setVersion(11630); - addNodeObject(generator, "MK Fall", Node_MK_Fall, "Generate leaves falling effects.") - .setIO(VALUE_TYPE.surface).setTags(["Leaf", "Leaves"]).setVersion(11630); - addNodeObject(generator, "MK Blinker", Node_MK_Blinker, "Flicker regions of the selected colors randomly.") - .setIO(VALUE_TYPE.surface).setVersion(11630); - addNodeObject(generator, "MK Lens Flare", Node_MK_Flare, "Generate lens flare.") - .setIO(VALUE_TYPE.surface).setVersion(11630); - addNodeObject(generator, "MK Delay Machine", Node_MK_Delay_Machine, "Combines multiple frames of animation into one.") - .setIO(VALUE_TYPE.surface).setVersion(11680); - addNodeObject(generator, "MK Fracture", Node_MK_Fracture, "Deterministically fracture and image and apply basic physics.") - .setIO(VALUE_TYPE.surface); - addNodeObject(generator, "MK Sparkle", Node_MK_Sparkle, "Generate random star animation.") - .setIO(VALUE_TYPE.surface); - addNodeObject(generator, "MK Subpixel", Node_MK_Subpixel, "Apply subpixel filter on top of a surface.") - .setIO(VALUE_TYPE.surface).setVersion(1_17_11_0); -#endregion - -#region compose - var compose = ds_list_create(); - addNodeCatagory("Compose", compose); - ds_list_add(compose, "Composes"); - addNodeObject(compose, "Blend", Node_Blend, "Combine 2 images using different blend modes.") - .setIO(VALUE_TYPE.surface); - addNodeObject(compose, "Composite", Node_Composite, "Combine multiple images with custom transformation.") - .setIO(VALUE_TYPE.surface); - addNodeObject(compose, "Stack", Node_Stack, "Place image next to each other linearly, or on top of each other.") - .setIO(VALUE_TYPE.surface).setVersion(1070); - addNodeObject(compose, "Image Grid", Node_Image_Grid, "Place image next to each other in grid pattern.") - .setIO(VALUE_TYPE.surface).setVersion(11640); - addNodeObject(compose, "Camera", Node_Camera, "Create camera that crop image to fix dimension with control of position, zoom. Also can be use to create parallax effect.") - .setIO(VALUE_TYPE.surface); - addNodeObject(compose, "Render Spritesheet", Node_Render_Sprite_Sheet, "Create spritesheet from image array or animation.") - .setIO(VALUE_TYPE.surface); - addNodeObject(compose, "Pack Sprites", Node_Pack_Sprites, "Combine array of images with different dimension using different algorithms.") - .setIO(VALUE_TYPE.surface).setVersion(1140); - - ds_list_add(compose, "Armature"); - ds_list_add(compose, "/Basics"); - addNodeObject(compose, "Armature Create", Node_Armature, "Create new armature system.") - .setIO(VALUE_TYPE.surface).setTags(["rigging", "bone"]).setVersion(1146); - addNodeObject(compose, "Armature Pose", Node_Armature_Pose, "Pose armature system.") - .setIO(VALUE_TYPE.surface).setTags(["rigging", "bone"]).setVersion(1146); - addNodeObject(compose, "Armature Bind", Node_Armature_Bind, "Bind and render image to an armature system.") - .setIO(VALUE_TYPE.surface).setTags(["rigging", "bone"]).setVersion(1146); - addNodeObject(compose, "Armature Mesh Rig", Node_Armature_Mesh_Rig, "Rig mesh to armature system.") - .setIO(VALUE_TYPE.surface).setTags(["rigging", "bone"]).setVersion(1_18_04_0); - ds_list_add(compose, "/Convertors"); - addNodeObject(compose, "Armature Path", Node_Armature_Path, "Generate path from armature system.") - .setIO(VALUE_TYPE.surface).setTags(["rigging", "bone"]).setVersion(1146); - addNodeObject(compose, "Armature Sample", Node_Armature_Sample, "Sample point from armature system.") - .setIO(VALUE_TYPE.surface).setTags(["rigging", "bone"]).setVersion(1147); - - if(!DEMO) { - ds_list_add(compose, "Export"); - addNodeObject(compose, "Export", Node_Export, "Export image/animation to file(s).") - .setIO(VALUE_TYPE.surface).setBuild(Node_create_Export); - } -#endregion - -#region values - var values = ds_list_create(); - addNodeCatagory("Values", values); - ds_list_add(values, "Raw data"); - addNodeObject(values, "Number", Node_Number, "Generate number data.") - .setIO(VALUE_TYPE.float); - addNodeObject(values, "Boolean", Node_Boolean, "Generate boolean (true, false) data.") - .setIO(VALUE_TYPE.boolean).setVersion(1090); - addNodeObject(values, "Text", Node_String, "Generate text/string data.") - .setIO(VALUE_TYPE.text); - addNodeObject(values, "Path", Node_Path, "Generate path.") - .setIO(VALUE_TYPE.float); - addNodeObject(values, "Area", Node_Area, "Generate area data.") - .setIO(VALUE_TYPE.float); - - ds_list_add(values, "Numbers"); - ds_list_add(values, "/Creators"); - addNodeObject(values, "Number", Node_Number, "Generate number data.") - .setIO(VALUE_TYPE.float); - addNodeObject(values, "To Number", Node_To_Number, "Convert string to number, supports scientific format (e.g. 1e-2 = 0.02).") - .setIO(VALUE_TYPE.float).setVersion(1145); - addNodeObject(values, "Random", Node_Random, "Generate pseudo-random value based on seed.") - .setIO(VALUE_TYPE.float); - addNodeObject(values, "Scatter Points", Node_Scatter_Points, "Generate array of vector 2 points.") - .setIO(VALUE_TYPE.float).setVersion(1120); - addNodeObject(values, "Transform Array", Node_Transform_Array, "Generate transfomation array.") - .setIO(VALUE_TYPE.float).setVersion(1146); - ds_list_add(values, "/Operators"); - addNodeObject(values, "Math", Node_Math, "Apply mathematical function to number(s).") - .setIO(VALUE_TYPE.float).setBuild(Node_create_Math).setTags(global.node_math_keys); - addNodeObject(values, "Equation", Node_Equation, "Evaluate string of equation. With an option for setting variables.") - .setIO(VALUE_TYPE.float).setBuild(Node_create_Equation); - addNodeObject(values, "Statistic", Node_Statistic, "Apply statistical operation (sum, average, median, etc.) to array of numbers.") - .setIO(VALUE_TYPE.float).setBuild(Node_create_Statistic).setTags(global.node_statistic_keys); - addNodeObject(values, "Convert Base", Node_Base_Convert, "Convert number from one base to another.") - .setIO(VALUE_TYPE.float).setTags(["binary", "hexadecimal"]).setVersion(1140); - addNodeObject(values, "FFT", Node_FFT, "Perform fourier transform on number array.") - .setIO(VALUE_TYPE.float).setTags(["frequency analysis"]).setVersion(1144); - - ds_list_add(values, "Vector"); - ds_list_add(values, "/Creators"); - addNodeObject(values, "Vector2", Node_Vector2, "Genearte vector composite of 2 members.") - .setIO(VALUE_TYPE.float); - addNodeObject(values, "Vector3", Node_Vector3, "Genearte vector composite of 3 members.") - .setIO(VALUE_TYPE.float); - addNodeObject(values, "Vector4", Node_Vector4, "Genearte vector composite of 4 members.") - .setIO(VALUE_TYPE.float); - ds_list_add(values, "/Components"); - addNodeObject(values, "Vector Split", Node_Vector_Split, "Split vector (up to 4) into individual components.") - .setIO(VALUE_TYPE.float); - addNodeObject(values, "Swizzle", Node_Vector_Swizzle, "Rearrange vector using string containing axis indicies (x, y, z, w).") - .setIO(VALUE_TYPE.float).setTags(["swap axis"]).setVersion(1_17_10_0); - ds_list_add(values, "/Operators"); - addNodeObject(values, "Magnitude", Node_Vector_Magnitude, "Calculate magnitude (length) of a vector.") - .setIO(VALUE_TYPE.float).setTags(["vector length", "vector magnitude"]).setVersion(1_17_10_0); - addNodeObject(values, "Dot product", Node_Vector_Dot, "Calculate dot product between vectors.") - .setIO(VALUE_TYPE.float).setVersion(1141); - addNodeObject(values, "Cross product 2D", Node_Vector_Cross_2D, "Calculate cross product of 2 vec2s.") - .setIO(VALUE_TYPE.float).setVersion(1141); - addNodeObject(values, "Cross product 3D", Node_Vector_Cross_3D, "Calculate cross product of 2 vec3s.") - .setIO(VALUE_TYPE.float).setVersion(1141); - ds_list_add(values, "/Points"); - addNodeObject(values, "Translate Point", Node_Move_Point, "Translate array of points.") - .setIO(VALUE_TYPE.float).setVersion(1141); - addNodeObject(values, "Point in Area", Node_Point_In_Area, "Check whether a point lies in an area.") - .setIO(VALUE_TYPE.float).setVersion(1_17_10_0); - - ds_list_add(values, "Texts"); - ds_list_add(values, "/Creators"); - addNodeObject(values, "Text", Node_String, "Generate text/string data.") - .setIO(VALUE_TYPE.text); - addNodeObject(values, "To Text", Node_To_Text, "Convert string to number.") - .setIO(VALUE_TYPE.text).setVersion(1145); - addNodeObject(values, "Unicode", Node_Unicode, "Convert unicode id into string.") - .setIO(VALUE_TYPE.text); - ds_list_add(values, "/Info"); - addNodeObject(values, "Text Length", Node_String_Length, "Return number of character in a string.") - .setIO(VALUE_TYPE.text, VALUE_TYPE.float).setVersion(1138); - addNodeObject(values, "Get Character", Node_String_Get_Char, "Get a nth character in a string.") - .setIO(VALUE_TYPE.text).setVersion(1100); - ds_list_add(values, "/Operators"); - addNodeObject(values, "Combine Texts", Node_String_Merge, "Combine multiple strings into one long string.") - .setIO(VALUE_TYPE.text).setTags(["join text", "concatenate text"]); - addNodeObject(values, "Join Text Array", Node_String_Join, "Combine string array with an option to add extra string in-between.") - .setIO(VALUE_TYPE.text).setVersion(1120); - addNodeObject(values, "Split Text", Node_String_Split, "Split string into arrays of substring based on delimiter.") - .setIO(VALUE_TYPE.text); - addNodeObject(values, "Trim Text", Node_String_Trim, "Remove first and last n character(s) from a string.") - .setIO(VALUE_TYPE.text).setVersion(1080); - ds_list_add(values, "/RegEx"); - addNodeObject(values, "RegEx Match", Node_String_Regex_Match, "Check whether regular expression pattern exist in a string.") - .setIO(VALUE_TYPE.text).setVersion(1140); - addNodeObject(values, "RegEx Search", Node_String_Regex_Search, "Search for instances in a string using regular expression.") - .setIO(VALUE_TYPE.text).setVersion(1140); - addNodeObject(values, "RegEx Replace", Node_String_Regex_Replace, "Replace instances of a string with another using regular expression.") - .setIO(VALUE_TYPE.text).setVersion(1140); - ds_list_add(values, "/Filename"); - addNodeObject(values, "Separate File Path", Node_Path_Separate_Folder, "Separate path string into a pair of directory and filename.") - .setIO(VALUE_TYPE.text).setVersion(1145); - - ds_list_add(values, "Arrays"); - ds_list_add(values, "/Creators"); - addNodeObject(values, "Array", Node_Array, "Create an array.") - .setIO(VALUE_TYPE.any); - addNodeObject(values, "Array Range", Node_Array_Range, "Create array of numbers by setting start, end and step length.") - .setIO(VALUE_TYPE.float); - addNodeObject(values, "Parse CSV", Node_Array_CSV_Parse, "Parse CSV string into array.") - .setIO(VALUE_TYPE.text).setVersion(1145); - ds_list_add(values, "/Info"); - addNodeObject(values, "Array Length", Node_Array_Length, "Returns number of members in an array.") - .setIO(VALUE_TYPE.any); - addNodeObject(values, "Array Get", Node_Array_Get, "Returns nth member in an array.") - .setIO(VALUE_TYPE.any); - addNodeObject(values, "Array Sample", Node_Array_Sample, "Sample member from an array to create smaller one.") - .setIO(VALUE_TYPE.any).setVersion(11540); - addNodeObject(values, "Array Find", Node_Array_Find, "Returns index of an array member that match a condition.") - .setIO(VALUE_TYPE.any).setVersion(1120); - ds_list_add(values, "/Operators"); - addNodeObject(values, "Array Set", Node_Array_Set, "Set array member based on index.") - .setIO(VALUE_TYPE.any).setVersion(1120); - addNodeObject(values, "Array Add", Node_Array_Add, "Add elements into an array.") - .setIO(VALUE_TYPE.any); - addNodeObject(values, "Array Split", Node_Array_Split, "Split array members into individual outputs.") - .setIO(VALUE_TYPE.any); - addNodeObject(values, "Array Insert", Node_Array_Insert, "Insert member into an array at any position.") - .setIO(VALUE_TYPE.any).setVersion(1120); - addNodeObject(values, "Array Remove", Node_Array_Remove, "Remove member in an array.") - .setIO(VALUE_TYPE.any).setTags(["delete array"]).setVersion(1120); - addNodeObject(values, "Array Reverse", Node_Array_Reverse, "Reverse array order") - .setIO(VALUE_TYPE.any).setVersion(1120); - addNodeObject(values, "Array Shift", Node_Array_Shift, "Shift all member in an array.") - .setIO(VALUE_TYPE.any).setVersion(1137); - addNodeObject(values, "Array Rearrange", Node_Array_Rearrange, "Rearrange array member manually.") - .setIO(VALUE_TYPE.any).setVersion(11640); - addNodeObject(values, "Array Zip", Node_Array_Zip, "Combine multiple arrays into higher dimension array by grouping member of the same indicies.") - .setIO(VALUE_TYPE.any).setVersion(1138); - addNodeObject(values, "Array Copy", Node_Array_Copy, "Copy array or subarray.") - .setIO(VALUE_TYPE.any).setVersion(1144); - addNodeObject(values, "Array Convolute", Node_Array_Convolute, "Apply convolution between 2 number arrays.") - .setIO(VALUE_TYPE.any).setVersion(11540); - addNodeObject(values, "Array Composite", Node_Array_Composite, "Create 2D array by multiplying each member in the first 1D array with the second 1D array.") - .setIO(VALUE_TYPE.any).setVersion(11540); - addNodeObject(values, "Shuffle Array", Node_Array_Shuffle, "Randomly rearrange the array members.") - .setIO(VALUE_TYPE.any).setVersion(1120); - ds_list_add(values, "/Group Operators"); - addNodeObject(values, "Sort Array", Node_Array_Sort, "Sort array using default comparison.") - .setIO(VALUE_TYPE.any).setVersion(1120); - addNodeObject(values, "Loop Array", Node_Iterate_Each_Inline, "Create group that iterate to each member in an array.") - .setIO(VALUE_TYPE.any).setSpr(s_node_loop_array).setTags(["iterate each", "for each"]); - addNodeObject(values, "Filter Array", Node_Iterate_Filter_Inline, "Filter array using condition.") - .setIO(VALUE_TYPE.any).setSpr(s_node_filter_array).setVersion(1140); - addNodeObject(values, "Sort Array Inline", Node_Iterate_Sort_Inline, "Sort array using node graph.") - .setIO(VALUE_TYPE.any).setSpr(s_node_sort_array).setVersion(1143); - - ds_list_add(values, "Paths"); - ds_list_add(values, "/Creators"); - addNodeObject(values, "Path", Node_Path, "Create path using bezier curve.") - .setIO(VALUE_TYPE.pathnode, VALUE_TYPE.float); - addNodeObject(values, "Smooth Path", Node_Path_Smooth, "Create path with automatic smoothness.") - .setIO(VALUE_TYPE.pathnode).setVersion(11640); - addNodeObject(values, "Shape Path", Node_Path_Shape, "Create path with predefined shape.") - .setIO(VALUE_TYPE.pathnode).setVersion(1_18_05_6); - addNodeObject(values, "Path Builder", Node_Path_Builder, "Create path from array of vec2 points.") - .setIO(VALUE_TYPE.pathnode).setVersion(1137); - addNodeObject(values, "L system", Node_Path_L_System, "Generate path using Lindenmayer system.") - .setIO(VALUE_TYPE.pathnode).setVersion(1137); - addNodeObject(values, "Path from Mask", Node_Path_From_Mask, "Create path that wrap around a mask.") - .setIO(VALUE_TYPE.pathnode, VALUE_TYPE.surface).setVersion(11640); - addNodeObject(values, "Plot Path", Node_Path_Plot, "Create path from parametric equations.") - .setIO(VALUE_TYPE.pathnode).setVersion(1138); - addNodeObject(values, "3D Path", Node_Path_3D, "Create path in 3D space.") - .setIO(VALUE_TYPE.pathnode).setVersion(11750); - addNodeObject(values, "Path Anchor", Node_Path_Anchor, "Create path anchor data.") - .setIO(VALUE_TYPE.pathnode, VALUE_TYPE.float).setVersion(1140); - ds_list_add(values, "/Modifiers"); - addNodeObject(values, "Transform Path", Node_Path_Transform, "Move rotate and scale a path.") - .setIO(VALUE_TYPE.pathnode).setVersion(1130); - addNodeObject(values, "Remap Path", Node_Path_Map_Area, "Scale path to fit a given area.") - .setIO(VALUE_TYPE.pathnode).setVersion(1130); - addNodeObject(values, "Shift Path", Node_Path_Shift, "Move path along its normal.") - .setIO(VALUE_TYPE.pathnode).setVersion(1130); - addNodeObject(values, "Trim Path", Node_Path_Trim, "Trim path.") - .setIO(VALUE_TYPE.pathnode).setVersion(1130); - addNodeObject(values, "Wave Path", Node_Path_Wave, "Apply wave effect along the path.") - .setIO(VALUE_TYPE.pathnode).setTags(["zigzag path"]).setVersion(1130); - addNodeObject(values, "Path Combine", Node_Path_Array, "Combine multiple path into one.") - .setIO(VALUE_TYPE.pathnode).setTags(["array path"]).setVersion(1137); - addNodeObject(values, "Reverse Path", Node_Path_Reverse, "Reverse path direction.") - .setIO(VALUE_TYPE.pathnode).setVersion(1130); - ds_list_add(values, "/Combine"); - addNodeObject(values, "Repeat Path", Node_Path_Repeat, "Repeat paths.") - .setIO(VALUE_TYPE.pathnode).setVersion(1_18_05_6); - addNodeObject(values, "Scatter Path", Node_Path_Scatter, "Scatter paths along another path.") - .setIO(VALUE_TYPE.pathnode).setVersion(11740); - addNodeObject(values, "Bridge Path", Node_Path_Bridge, "Create new paths that connect multiple paths at the same sample positions.") - .setIO(VALUE_TYPE.pathnode).setVersion(11640); - addNodeObject(values, "Blend Path", Node_Path_Blend, "Blend between 2 paths.") - .setIO(VALUE_TYPE.pathnode); - ds_list_add(values, "/To Number"); - addNodeObject(values, "Sample Path", Node_Path_Sample, "Sample a 2D position from a path") - .setIO(VALUE_TYPE.pathnode, VALUE_TYPE.float); - addNodeObject(values, "Bake Path", Node_Path_Bake, "Bake path data into array of vec2 points.") - .setIO(VALUE_TYPE.pathnode, VALUE_TYPE.float).setVersion(11640); - ds_list_add(values, "/To Surface"); - addNodeObject(values, "Fill Path", Node_Path_Fill, "Fill area inside path.") - .setIO(VALUE_TYPE.float).setVersion(1_18_06_2); - addNodeObject(values, "Map Path", Node_Path_Map, "Map a texture between multiple paths.") - .setIO(VALUE_TYPE.pathnode, VALUE_TYPE.surface).setVersion(11640); - addNodeObject(values, "Morph Path", Node_Path_Morph, "Draw gradient connecting 2 paths.") - .setIO(VALUE_TYPE.pathnode, VALUE_TYPE.surface).setVersion(1_18_06_2); - ds_list_add(values, "/Segments"); - addNodeObject(values, "Filter Segments", Node_Segment_Filter, "Filter segment (vec2 array) based on a conditions.") - .setIO(VALUE_TYPE.float).setVersion(11780); - - ds_list_add(values, "Boolean"); - addNodeObject(values, "Boolean", Node_Boolean) - .setIO(VALUE_TYPE.boolean); - addNodeObject(values, "Compare", Node_Compare, "Compare 2 numbers.") - .setIO(VALUE_TYPE.boolean, VALUE_TYPE.float).setBuild(Node_create_Compare).setTags(global.node_compare_keys); - addNodeObject(values, "Logic Opr", Node_Logic, "Apply logic operation (and, or, not, etc.) to boolean(s).") - .setIO(VALUE_TYPE.boolean, VALUE_TYPE.float).setBuild(Node_create_Logic).setTags(global.node_logic_keys); - - ds_list_add(values, "Trigger"); - addNodeObject(values, "Trigger", Node_Trigger, "Create trigger value.") - .setIO(VALUE_TYPE.boolean, VALUE_TYPE.trigger).setVersion(1140); - addNodeObject(values, "Boolean Trigger", Node_Trigger_Bool, "Create trigger based on boolean condition.") - .setIO(VALUE_TYPE.boolean, VALUE_TYPE.trigger).setVersion(1140); - - ds_list_add(values, "Struct"); - addNodeObject(values, "Struct", Node_Struct, "Create key-value pair struct.") - .setIO(VALUE_TYPE.struct); - addNodeObject(values, "Struct Get", Node_Struct_Get, "Get value from struct and key.") - .setIO(VALUE_TYPE.struct); - addNodeObject(values, "Struct Set", Node_Struct_Set, "Modify struct") - .setIO(VALUE_TYPE.struct); - addNodeObject(values, "Parse JSON", Node_Struct_JSON_Parse, "Parse json string into struct/array.") - .setIO(VALUE_TYPE.struct, VALUE_TYPE.text).setVersion(1145); - - ds_list_add(values, "Mesh"); - addNodeObject(values, "Path to Mesh", Node_Mesh_Create_Path, "Create mesh from path.") - .setIO(VALUE_TYPE.pathnode, VALUE_TYPE.mesh).setVersion(1140); - addNodeObject(values, "Mesh Transform", Node_Mesh_Transform, "Transform (move, rotate, scale) mesh.") - .setIO(VALUE_TYPE.mesh).setVersion(1140); - - ds_list_add(values, "Atlas"); - addNodeObject(values, "Draw Atlas", Node_Atlas_Draw, "Render image atlas to a surface.") - .setIO(VALUE_TYPE.surface).setVersion(1141); - addNodeObject(values, "Atlas Get", Node_Atlas_Get, "Extract atlas data.") - .setIO(VALUE_TYPE.surface).setVersion(1141); - addNodeObject(values, "Atlas Set", Node_Atlas_Set, "Modify atlas data.") - .setIO(VALUE_TYPE.surface).setVersion(1141); - addNodeObject(values, "Atlas to Struct", Node_Atlas_Struct, "Convert atlas into generic struct.") - .setIO(VALUE_TYPE.surface).setVersion(11710); - - ds_list_add(values, "Surface"); - addNodeObject(values, "Surface Data", Node_Surface_data, "Extract information about a surface") - .setIO(VALUE_TYPE.surface).setTags(["surface info"]).setVersion(1_18_07_0); - // addNodeObject(values, "Dynamic Surface", Node_dynaSurf).setVersion(11520); - addNodeObject(values, "IsoSurf", Node_IsoSurf, "Create a dynamic surface that changes its texture based on rotation.") - .setIO(VALUE_TYPE.surface).setVersion(11520); - addNodeObject(values, "Surface from Buffer", Node_Surface_From_Buffer, "Create surface from a valid buffer.") - .setIO(VALUE_TYPE.surface, VALUE_TYPE.buffer).setTags(["buffer to surface"]).setVersion(1146); - - ds_list_add(values, "Buffer"); - addNodeObject(values, "Buffer from Surface", Node_Surface_To_Buffer, "Create buffer from a surface.") - .setIO(VALUE_TYPE.surface, VALUE_TYPE.buffer).setTags(["surface to buffer"]).setVersion(1146); -#endregion - -#region color - var color = ds_list_create(); - addNodeCatagory("Color", color); - ds_list_add(color, "Colors"); - ds_list_add(color, "/Creators"); - addNodeObject(color, "Color", Node_Color, "Create color value.") - .setIO(VALUE_TYPE.color).setSpr(s_node_color_out); - addNodeObject(color, "RGB Color", Node_Color_RGB, "Create (rgb) color from value in RGB color space.") - .setIO(VALUE_TYPE.color).setSpr(s_node_color_from_rgb); - addNodeObject(color, "HSV Color", Node_Color_HSV, "Create (rgb) color from value in HSV color space.") - .setIO(VALUE_TYPE.color).setSpr(s_node_color_from_hsv); - addNodeObject(color, "OKLCH Color", Node_Color_OKLCH, "Create (rgb) color from value in OKLCH color space.") - .setIO(VALUE_TYPE.color).setSpr(s_node_color_from_oklch).setTags(["oklab"]); - ds_list_add(color, "/Data"); - addNodeObject(color, "Color Data", Node_Color_Data, "Get data (rgb, hsv, brightness) from color.") - .setIO(VALUE_TYPE.color).setTags(["red", "green", "blue", "alpha", "brightness", "luminance"]); - ds_list_add(color, "/Operators"); - addNodeObject(color, "Mix Color", Node_Color_Mix, "Combine two colors.") - .setIO(VALUE_TYPE.color).setVersion(1140); - ds_list_add(color, "/Surfaces"); - addNodeObject(color, "Sampler", Node_Sampler, "Sample color from an image.") - .setIO(VALUE_TYPE.color, VALUE_TYPE.surface); - addNodeObject(color, "Find pixel", Node_Find_Pixel, "Get the position of the first pixel with a given color.") - .setIO(VALUE_TYPE.color, VALUE_TYPE.surface, VALUE_TYPE.float).setVersion(1130); - - ds_list_add(color, "Palettes"); - addNodeObject(color, "Palette", Node_Palette, "Create palette value. Note that palette is simple an array of colors.") - .setIO(VALUE_TYPE.color); - addNodeObject(color, "Sort Palette", Node_Palette_Sort, "Sort palette with specified order.") - .setIO(VALUE_TYPE.color).setVersion(1130); - addNodeObject(color, "Shrink Palette", Node_Palette_Shrink, "Reduce palette size by collapsing similiar colors.") - .setIO(VALUE_TYPE.color).setVersion(1_18_03_0); - addNodeObject(color, "Palette Extract", Node_Palette_Extract, "Extract palette from an image.") - .setIO(VALUE_TYPE.color).setVersion(1100); - addNodeObject(color, "Palette Replace", Node_Palette_Replace, "Replace colors in a palette with new one.") - .setIO(VALUE_TYPE.color).setVersion(1120); - - ds_list_add(color, "Gradient"); - addNodeObject(color, "Gradient", Node_Gradient_Out, "Create gradient object") - .setIO(VALUE_TYPE.gradient); - addNodeObject(color, "Palette to Gradient", Node_Gradient_Palette, "Create gradient from palette.") - .setIO(VALUE_TYPE.gradient).setVersion(1135); - addNodeObject(color, "Gradient Shift", Node_Gradient_Shift, "Move gradients keys.") - .setIO(VALUE_TYPE.gradient); - addNodeObject(color, "Gradient Replace", Node_Gradient_Replace_Color, "Replace color inside a gradient.") - .setIO(VALUE_TYPE.gradient).setVersion(1135); - addNodeObject(color, "Gradient Data", Node_Gradient_Extract, "Get palatte and array of key positions from gradient.") - .setIO(VALUE_TYPE.gradient).setVersion(1135); - addNodeObject(color, "Sample Gradient", Node_Gradient_Sample, "Sample gradient into palette.") - .setIO(VALUE_TYPE.gradient, VALUE_TYPE.particle).setVersion(1_18_04_1); -#endregion - -#region animation - var animation = ds_list_create(); - addNodeCatagory("Animation", animation); - ds_list_add(animation, "Animations"); - addNodeObject(animation, "Frame Index", Node_Counter, "Output current frame as frame index, or animation progress (0 - 1).") - .setIO(VALUE_TYPE.float).setTags(["current frame", "counter"]); - addNodeObject(animation, "Rate Remap", Node_Rate_Remap, "Remap animation to a new framerate.") - .setIO(VALUE_TYPE.surface).setVersion(1147); - addNodeObject(animation, "Delay", Node_Delay, "Delay the animation by fix amount of frames.") - .setIO(VALUE_TYPE.surface).setVersion(11640); - addNodeObject(animation, "Stagger", Node_Stagger, "Delay the animation based on array index.") - .setIO(VALUE_TYPE.surface).setVersion(11640); - addNodeObject(animation, "Reverse", Node_Revert, "Cache the entire animation and replay backward.") - .setIO(VALUE_TYPE.surface).setVersion(1_17_11_0); - - ds_list_add(animation, "Value"); - addNodeObject(animation, "Evaluate Curve", Node_Anim_Curve, "Evaluate value from an animation curve.") - .setIO(VALUE_TYPE.float); - addNodeObject(animation, "WaveTable", Node_Fn_WaveTable, "Create value changing overtime in wave pattern.") - .setIO(VALUE_TYPE.float).setVersion(11720); - addNodeObject(animation, "Wiggler", Node_Wiggler, "Create random value smoothly changing over time.") - .setIO(VALUE_TYPE.float); - addNodeObject(animation, "Ease", Node_Fn_Ease, "Create easing function.") - .setIO(VALUE_TYPE.float).setVersion(11720); - addNodeObject(animation, "Math", Node_Fn_Math, "Apply mathematic operation of wave value.") - .setIO(VALUE_TYPE.float).setVersion(11720); - addNodeObject(animation, "SmoothStep", Node_Fn_SmoothStep, "Apply smoothstop function to a value.") - .setIO(VALUE_TYPE.float).setVersion(11720); - - ds_list_add(animation, "Audio"); - ds_list_add(animation, "/Files"); - addNodeObject(animation, "WAV File In", Node_WAV_File_Read, "Load wav audio file.") - .setIO(VALUE_TYPE.audioBit, VALUE_TYPE.text).setBuild(Node_create_WAV_File_Read).setVersion(1144); - addNodeObject(animation, "WAV File Out", Node_WAV_File_Write, "Save wav audio file.") - .setIO(VALUE_TYPE.audioBit, VALUE_TYPE.text).setVersion(1145); - ds_list_add(animation, "/Analyzers"); - addNodeObject(animation, "Audio Window", Node_Audio_Window, "Take a slice of an audio array based on the current frame.") - .setIO(VALUE_TYPE.audioBit, VALUE_TYPE.float).setVersion(1144); - addNodeObject(animation, "Audio Volume", Node_Audio_Loudness, "Calculate volume of an audio bit array.") - .setIO(VALUE_TYPE.audioBit, VALUE_TYPE.float).setVersion(11540); - addNodeObject(animation, "FFT", Node_FFT, "Perform fourier transform on number array.") - .setIO(VALUE_TYPE.audioBit, VALUE_TYPE.float).setTags(["frequency analysis"]) - .setVersion(1144); - ds_list_add(animation, "/Renders"); - addNodeObject(animation, "Bar / Graph", Node_Plot_Linear, "Plot graph or bar chart from array of number.") - .setIO(VALUE_TYPE.surface, VALUE_TYPE.float).setBuild(Node_create_Plot_Linear).setTags(global.node_plot_linear_keys).setVersion(1144); -#endregion - -#region misc - var node = ds_list_create(); - addNodeCatagory("Misc", node); - ds_list_add(node, "Control"); - addNodeObject(node, "Condition", Node_Condition, "Output value based on conditions.") - .setIO(VALUE_TYPE.any); - addNodeObject(node, "Switch", Node_Switch, "Output value based on index.") - .setIO(VALUE_TYPE.any).setVersion(1090); - addNodeObject(node, "Animation Control", Node_Animation_Control, "Control animation state with triggers.") - .setIO(VALUE_TYPE.any).setVersion(1145); - - ds_list_add(node, "Groups"); - addNodeObject(node, "Group", Node_Group) - .setIO(VALUE_TYPE.any); - addNodeObject(node, "Feedback", Node_Feedback, "Create a group that reuse output from last frame to the current one.") - .setIO(VALUE_TYPE.any).isDeprecated(); - addNodeObject(node, "Loop", Node_Iterate, "Create group that reuse output as input repeatedly in one frame.") - .setIO(VALUE_TYPE.any).isDeprecated(); - addNodeObject(node, "Loop Array", Node_Iterate_Each_Inline, "Create group that iterate to each member in an array.") - .setIO(VALUE_TYPE.any).setSpr(s_node_loop_array).setTags(["iterate each", "for each", "array loop"]); - addNodeObject(node, "Filter Array",Node_Iterate_Filter_Inline, "Filter array using condition.") - .setIO(VALUE_TYPE.any).setSpr(s_node_filter_array).setVersion(1140); - - if(OS == os_windows) { - ds_list_add(node, "Lua"); - addNodeObject(node, "Lua Global", Node_Lua_Global, "Execute lua script in global scope without returning any data.") - .setIO(VALUE_TYPE.any).setVersion(1090); - addNodeObject(node, "Lua Surface", Node_Lua_Surface, "Execute lua script on a surface.") - .setIO(VALUE_TYPE.any).setVersion(1090); - addNodeObject(node, "Lua Compute", Node_Lua_Compute, "Execute lua function and returns a data.") - .setIO(VALUE_TYPE.any).setVersion(1090); - - ds_list_add(node, "Shader"); - addNodeObject(node, "HLSL", Node_HLSL, "Execute HLSL shader on a surface.") - .setIO(VALUE_TYPE.any).setVersion(11520); - } - - ds_list_add(node, "Organize"); - addNodeObject(node, "Pin", Node_Pin, "Create a pin to organize your connection. Can be create by double clicking on a connection line.") - .setIO(VALUE_TYPE.any); - addNodeObject(node, "Array Pin", Node_Array_Pin, "Create a pin that can receive multiple values and return an array.") - .setIO(VALUE_TYPE.any).setVersion(11770); - addNodeObject(node, "Frame", Node_Frame, "Create frame surrounding nodes.") - .setIO(VALUE_TYPE.any); - addNodeObject(node, "Tunnel In", Node_Tunnel_In, "Create tunnel for sending value based on key matching.") - .setIO(VALUE_TYPE.any); - addNodeObject(node, "Tunnel Out", Node_Tunnel_Out, "Receive value from tunnel in of the same key.") - .setIO(VALUE_TYPE.any); - addNodeObject(node, "Display Text", Node_Display_Text, "Display text on the graph.") - .setIO(VALUE_TYPE.text); - addNodeObject(node, "Display Image", Node_Display_Image, "Display image on the graph.") - .setIO(VALUE_TYPE.surface).setBuild(Node_create_Display_Image).setSpr(s_node_image); - - ds_list_add(node, "Cache"); - addNodeObject(node, "Cache", Node_Cache, "Store current animation. Cache persisted between save.") - .setIO(VALUE_TYPE.any).setVersion(1134); - addNodeObject(node, "Cache Array", Node_Cache_Array, "Store current animation as array. Cache persisted between save.") - .setIO(VALUE_TYPE.any).setVersion(1130); - - ds_list_add(node, "Debug"); - addNodeObject(node, "Print", Node_Print, "Display text to notification.") - .setIO(VALUE_TYPE.text).setTags(["debug log"]).setVersion(1145); - addNodeObject(node, "Widget Test", Node_Widget_Test) - .setSpr(s_node_print); - addNodeObject(node, "Graph Preview", Node_Graph_Preview) - .setIO(VALUE_TYPE.surface).setSpr(s_node_image); - addNodeObject(node, "Slideshow", Node_Slideshow) - .setIO(VALUE_TYPE.any).setSpr(s_node_image); - //addNodeObject(node, "Module Test", s_node_print, Node_Module_Test); - - ds_list_add(node, "Project"); - addNodeObject(node, "Project Data", Node_Project_Data) - .setIO(VALUE_TYPE.text).setVersion(11650); - - ds_list_add(node, "System"); - addNodeObject(node, "Argument", Node_Argument) - .setIO(VALUE_TYPE.any).setVersion(11660); - addNodeObject(node, "Terminal trigger", Node_Terminal_Trigger) - .setIO(VALUE_TYPE.any).setVersion(11660); - addNodeObject(node, "Execute Shell", Node_Shell, "Execute shell script.") - .setIO(VALUE_TYPE.any).setTags(["terminal", "execute", "run", "console"]).setVersion(11530); - addNodeObject(node, "Monitor Capture", Node_Monitor_Capture) - .setIO(VALUE_TYPE.any).notTest(); - addNodeObject(node, "GUI In", Node_Application_In) - .setIO(VALUE_TYPE.any).setSpr(s_node_gui_in).notTest(); - addNodeObject(node, "GUI Out", Node_Application_Out) - .setIO(VALUE_TYPE.any).setSpr(s_node_gui_out).notTest(); - addNodeObject(node, "Assert", Node_Assert) - .setIO(VALUE_TYPE.any).setSpr(s_node_shell); - // addNodeObject(node, "DLL", s_node_gui_out, Node_DLL).setVersion(11750); -#endregion - - globalvar NODE_ACTION_LIST; NODE_ACTION_LIST = ds_list_create(); addNodeCatagory("Action", NODE_ACTION_LIST); - __initNodeActions(); - - // var customs = ds_list_create(); - // addNodeCatagory("Custom", customs); - // __initNodeCustom(customs); + __initNodeActions(); if(IS_PATREON) addNodeCatagory("Extra", SUPPORTER_NODES); - //var vct = ds_list_create(); - //addNodeCatagory("VCT", vct); - // addNodeObject(vct, "Biterator", s_node_print, Node_Biterator); - - //////////////////////////////////////////////////////////// PIXEL BUILDER //////////////////////////////////////////////////////////// - -#region pb_group - var pb_group = ds_list_create(); - addNodePBCatagory("Group", pb_group); //#PB Group - ds_list_add(pb_group, "Groups"); - addNodeObject(pb_group, "Input", Node_Group_Input) - .setIO(VALUE_TYPE.any).hideRecent(); - addNodeObject(pb_group, "Output", Node_Group_Output) - .setIO(VALUE_TYPE.any).hideRecent(); -#endregion - -#region pb_draw - var pb_draw = ds_list_create(); - addNodePBCatagory("Draw", pb_draw); //#PB Draw - ds_list_add(pb_draw, "Fill"); - addNodeObject(pb_draw, "Fill", Node_PB_Draw_Fill) - .setIO(VALUE_TYPE.pbBox).hideRecent(); - - ds_list_add(pb_draw, "Shape"); - addNodeObject(pb_draw, "Rectangle", Node_PB_Draw_Rectangle) - .setIO(VALUE_TYPE.pbBox).hideRecent(); - addNodeObject(pb_draw, "Round Rectangle", Node_PB_Draw_Round_Rectangle) - .setIO(VALUE_TYPE.pbBox).hideRecent(); - addNodeObject(pb_draw, "Trapezoid", Node_PB_Draw_Trapezoid) - .setIO(VALUE_TYPE.pbBox).hideRecent(); - addNodeObject(pb_draw, "Diamond", Node_PB_Draw_Diamond) - .setIO(VALUE_TYPE.pbBox).hideRecent(); - addNodeObject(pb_draw, "Ellipse", Node_PB_Draw_Ellipse) - .setIO(VALUE_TYPE.pbBox).hideRecent(); - addNodeObject(pb_draw, "Semi-Ellipse", Node_PB_Draw_Semi_Ellipse) - .setIO(VALUE_TYPE.pbBox).hideRecent(); - addNodeObject(pb_draw, "Line", Node_PB_Draw_Line) - .setIO(VALUE_TYPE.pbBox).hideRecent(); - addNodeObject(pb_draw, "Angle", Node_PB_Draw_Angle) - .setIO(VALUE_TYPE.pbBox).hideRecent(); - addNodeObject(pb_draw, "Blob", Node_PB_Draw_Blob) - .setIO(VALUE_TYPE.pbBox).hideRecent(); -#endregion - -#region pb_box - var pb_box = ds_list_create(); - addNodePBCatagory("Box", pb_box); //#PB Box - ds_list_add(pb_box, "Layer"); - addNodeObject(pb_box, "Layer", Node_PB_Layer) - .setIO(VALUE_TYPE.pbBox).hideRecent(); - - ds_list_add(pb_box, "Box"); - addNodeObject(pb_box, "Transform", Node_PB_Box_Transform) - .setIO(VALUE_TYPE.pbBox).hideRecent(); - addNodeObject(pb_box, "Mirror", Node_PB_Box_Mirror) - .setIO(VALUE_TYPE.pbBox).hideRecent(); - addNodeObject(pb_box, "Inset", Node_PB_Box_Inset) - .setIO(VALUE_TYPE.pbBox).hideRecent(); - addNodeObject(pb_box, "Split", Node_PB_Box_Split) - .setIO(VALUE_TYPE.pbBox).hideRecent(); - addNodeObject(pb_box, "Divide", Node_PB_Box_Divide) - .setIO(VALUE_TYPE.pbBox).hideRecent(); - addNodeObject(pb_box, "Divide Grid", Node_PB_Box_Divide_Grid) - .setIO(VALUE_TYPE.pbBox).hideRecent(); - addNodeObject(pb_box, "Contract", Node_PB_Box_Contract) - .setIO(VALUE_TYPE.pbBox).hideRecent(); -#endregion - -#region pb_fx - var pb_fx = ds_list_create(); - addNodePBCatagory("Effects", pb_fx); //#PB Effects - ds_list_add(pb_fx, "Effect"); - addNodeObject(pb_fx, "Outline", Node_PB_Fx_Outline) - .setIO(VALUE_TYPE.pbBox).hideRecent(); - addNodeObject(pb_fx, "Stack", Node_PB_Fx_Stack) - .setIO(VALUE_TYPE.pbBox).hideRecent(); - addNodeObject(pb_fx, "Radial", Node_PB_Fx_Radial) - .setIO(VALUE_TYPE.pbBox).hideRecent(); - - ds_list_add(pb_fx, "Lighting"); - addNodeObject(pb_fx, "Highlight", Node_PB_Fx_Highlight) - .setIO(VALUE_TYPE.pbBox).hideRecent(); - addNodeObject(pb_fx, "Shading", Node_PB_Fx_Shading) - .setIO(VALUE_TYPE.pbBox).hideRecent(); - - ds_list_add(pb_fx, "Texture"); - addNodeObject(pb_fx, "Hashing", Node_PB_Fx_Hash) - .setIO(VALUE_TYPE.pbBox).hideRecent(); - addNodeObject(pb_fx, "Strip", Node_PB_Fx_Strip) - .setIO(VALUE_TYPE.pbBox).hideRecent(); - addNodeObject(pb_fx, "Brick", Node_PB_Fx_Brick) - .setIO(VALUE_TYPE.pbBox).hideRecent(); - - ds_list_add(pb_fx, "Blend"); - addNodeObject(pb_fx, "Add", Node_PB_Fx_Add) - .setIO(VALUE_TYPE.pbBox).hideRecent(); - addNodeObject(pb_fx, "Subtract", Node_PB_Fx_Subtract) - .setIO(VALUE_TYPE.pbBox).hideRecent(); - addNodeObject(pb_fx, "Intersect", Node_PB_Fx_Intersect) - .setIO(VALUE_TYPE.pbBox).hideRecent(); -#endregion - -#region pb_arr - var pb_arr = ds_list_create(); - addNodePBCatagory("Array", pb_arr); //#PB Array - addNodeObject(pb_arr, "Array", Node_Array) - .setIO(VALUE_TYPE.pbBox).hideRecent(); - addNodeObject(pb_arr, "Array Get", Node_Array_Get) - .setIO(VALUE_TYPE.pbBox).setTags(["get array"]).hideRecent(); - addNodeObject(pb_arr, "Array Set", Node_Array_Set) - .setIO(VALUE_TYPE.pbBox).setTags(["set array"]).hideRecent().setVersion(1120); - addNodeObject(pb_arr, "Array Insert", Node_Array_Insert) - .setIO(VALUE_TYPE.pbBox).setTags(["insert array"]).hideRecent().setVersion(1120); - addNodeObject(pb_arr, "Array Remove", Node_Array_Remove) - .setIO(VALUE_TYPE.pbBox).setTags(["remove array", "delete array", "array delete"]).hideRecent().setVersion(1120); -#endregion - - /////////////////////////////////////////////////////////////// PCX NODE /////////////////////////////////////////////////////////////// - -#region pcx_var - var pcx_var = ds_list_create(); - addNodePCXCatagory("Variable", pcx_var); - addNodeObject(pcx_var, "Variable", Node_PCX_var) - .setIO(VALUE_TYPE.pbBox).setSpr(s_node_array).hideRecent(); - addNodeObject(pcx_var, "Fn Variable", Node_PCX_fn_var) - .setIO(VALUE_TYPE.pbBox).setSpr(s_node_array).hideRecent(); -#endregion - -#region pcx_fn - var pcx_fn = ds_list_create(); - addNodePCXCatagory("Functions", pcx_fn); - addNodeObject(pcx_fn, "Equation", Node_PCX_Equation) - .setIO(VALUE_TYPE.pbBox).setSpr(s_node_array).hideRecent(); - - ds_list_add(pcx_fn, "Numbers"); - addNodeObject(pcx_fn, "Math", Node_PCX_fn_Math) - .setIO(VALUE_TYPE.pbBox).setSpr(s_node_array).hideRecent(); - addNodeObject(pcx_fn, "Random", Node_PCX_fn_Random) - .setIO(VALUE_TYPE.pbBox).setSpr(s_node_array).hideRecent(); - - ds_list_add(pcx_fn, "Surface"); - addNodeObject(pcx_fn, "Surface Width", Node_PCX_fn_Surface_Width) - .setIO(VALUE_TYPE.pbBox).setSpr(s_node_array).hideRecent(); - addNodeObject(pcx_fn, "Surface Height", Node_PCX_fn_Surface_Height) - .setIO(VALUE_TYPE.pbBox).setSpr(s_node_array).hideRecent(); - - ds_list_add(pcx_fn, "Array"); - addNodeObject(pcx_fn, "Array Get", Node_PCX_Array_Get) - .setIO(VALUE_TYPE.pbBox).setSpr(s_node_array).hideRecent(); - addNodeObject(pcx_fn, "Array Set", Node_PCX_Array_Set) - .setIO(VALUE_TYPE.pbBox).setSpr(s_node_array).hideRecent(); -#endregion - -#region pcx_flow - var pcx_flow = ds_list_create(); - addNodePCXCatagory("Flow Control", pcx_flow); - addNodeObject(pcx_flow, "Condition", Node_PCX_Condition) - .setIO(VALUE_TYPE.pbBox).setSpr(s_node_array).hideRecent(); -#endregion - - //////////////////////////////////////////////////////////////// HIDDEN //////////////////////////////////////////////////////////////// - -#region hid - var hid = ds_list_create(); - addNodeCatagory("Hidden", hid, ["Hidden"]); - addNodeObject(hid, "Input", Node_Iterator_Each_Input) - .setSpr(s_node_loop_input).hideRecent(); - addNodeObject(hid, "Output", Node_Iterator_Each_Output) - .setSpr(s_node_loop_output).hideRecent(); - addNodeObject(hid, "Input", Node_Iterator_Filter_Input) - .setSpr(s_node_loop_input).hideRecent(); - addNodeObject(hid, "Output", Node_Iterator_Filter_Output) - .setSpr(s_node_loop_output).hideRecent(); - addNodeObject(hid, "Grid Noise", Node_Grid_Noise) - .hideRecent(); - addNodeObject(hid, "Triangular Noise", Node_Noise_Tri) - .setSpr(s_node_grid_tri_noise).hideRecent().setVersion(1090); - addNodeObject(hid, "Hexagonal Noise", Node_Noise_Hex) - .setSpr(s_node_grid_hex_noise).hideRecent().setVersion(1090); - addNodeObject(hid, "Sort Input", Node_Iterator_Sort_Input) - .setSpr(s_node_grid_hex_noise).hideRecent(); - addNodeObject(hid, "Sort Output", Node_Iterator_Sort_Output) - .setSpr(s_node_grid_hex_noise).hideRecent(); - addNodeObject(hid, "Onion Skin", Node_Onion_Skin) - .setSpr(s_node_cache).setVersion(1147).hideRecent(); - addNodeObject(hid, "RigidSim", Node_Rigid_Group, "Create group for rigidbody simulation.") - .setSpr(s_node_rigid).setVersion(1110).hideRecent(); - addNodeObject(hid, "SmokeSim", Node_Smoke_Group, "Create group for fluid simulation.") - .setSpr(s_node_smoke_group).setVersion(1120).hideRecent(); - addNodeObject(hid, "StrandSim", Node_Strand_Group, "Create group for hair simulation.") - .setSpr(s_node_strand).setVersion(1140).hideRecent(); - addNodeObject(hid, "Feedback", Node_Feedback_Inline) - .setSpr(s_node_feedback).hideRecent(); - addNodeObject(hid, "Loop", Node_Iterate_Inline) - .setSpr(s_node_iterate).hideRecent(); - addNodeObject(hid, "VFX", Node_VFX_Group) - .setSpr(s_node_vfx).hideRecent(); - - addNodeObject(hid, "Loop Array", Node_Iterate_Each) - .setSpr(s_node_loop_array).hideRecent(); - addNodeObject(hid, "Loop Input", Node_Iterator_Each_Inline_Input) - .setSpr(s_node_loop_array).hideRecent(); - addNodeObject(hid, "Loop Output", Node_Iterator_Each_Inline_Output) - .setSpr(s_node_loop_array).hideRecent(); - addNodeObject(hid, "Filter Array", Node_Iterate_Filter, "Filter array using condition.") - .setSpr(s_node_filter_array).hideRecent(); - addNodeObject(hid, "Filter Input", Node_Iterator_Filter_Inline_Input) - .setSpr(s_node_filter_array).hideRecent(); - addNodeObject(hid, "Filter Output", Node_Iterator_Filter_Inline_Output) - .setSpr(s_node_filter_array).hideRecent(); - addNodeObject(hid, "Sort Array", Node_Iterate_Sort, "Sort array using node graph.") - .setSpr(s_node_sort_array).hideRecent(); - addNodeObject(hid, "Sort Input", Node_Iterator_Sort_Inline_Input) - .setSpr(s_node_sort_array).hideRecent(); - addNodeObject(hid, "Sort Output", Node_Iterator_Sort_Inline_Output) - .setSpr(s_node_sort_array).hideRecent(); - - ds_list_add(hid, "DynaSurf"); - addNodeObject(hid, "Input", Node_DynaSurf_In) - .setSpr(s_node_pixel_builder).hideRecent(); - addNodeObject(hid, "Output", Node_DynaSurf_Out) - .setSpr(s_node_pixel_builder).hideRecent(); - addNodeObject(hid, "getWidth", Node_DynaSurf_Out_Width) - .setSpr(s_node_pixel_builder).hideRecent(); - addNodeObject(hid, "getHeight", Node_DynaSurf_Out_Height) - .setSpr(s_node_pixel_builder).hideRecent(); -#endregion - - ////////////////////////// - + __read_node_display(_data.pb, addNodePBCatagory); + __read_node_display(_data.pcx, addNodePCXCatagory); } function __generateNodeData() { @@ -2160,13 +510,52 @@ function __generateNodeData() { var _node = _list[| j]; if(!is(_node, NodeObject)) continue; - var _nme = _node.name; + var _nme = _node.nodeName; var _vnme = filename_name_validate(_nme); - print("check node", _nme) var _str = _node.serialize(); directory_verify($"{_dir}/{_lnme}/{_vnme}"); json_save_struct($"{_dir}/{_lnme}/{_vnme}/info.json", _str, true); } } + + for( var i = 0, n = ds_list_size(NODE_PB_CATEGORY); i < n; i++ ) { + var _cat = NODE_PB_CATEGORY[| i]; + + var _lnme = _cat.name; + var _list = _cat.list; + directory_verify($"{_dir}/{_lnme}"); + + for( var j = 0, m = ds_list_size(_list); j < m; j++ ) { + var _node = _list[| j]; + if(!is(_node, NodeObject)) continue; + + var _nme = _node.nodeName; + var _vnme = filename_name_validate(_nme); + + var _str = _node.serialize(); + directory_verify($"{_dir}/pb_{_lnme}/{_vnme}"); + json_save_struct($"{_dir}/pb_{_lnme}/{_vnme}/info.json", _str, true); + } + } + + for( var i = 0, n = ds_list_size(NODE_PCX_CATEGORY); i < n; i++ ) { + var _cat = NODE_PCX_CATEGORY[| i]; + + var _lnme = _cat.name; + var _list = _cat.list; + directory_verify($"{_dir}/{_lnme}"); + + for( var j = 0, m = ds_list_size(_list); j < m; j++ ) { + var _node = _list[| j]; + if(!is(_node, NodeObject)) continue; + + var _nme = _node.nodeName; + var _vnme = filename_name_validate(_nme); + + var _str = _node.serialize(); + directory_verify($"{_dir}/pcx_{_lnme}/{_vnme}"); + json_save_struct($"{_dir}/pcx_{_lnme}/{_vnme}/info.json", _str, true); + } + } } \ No newline at end of file diff --git a/scripts/panel_collection/panel_collection.gml b/scripts/panel_collection/panel_collection.gml index a97f6b88e..d19bf2532 100644 --- a/scripts/panel_collection/panel_collection.gml +++ b/scripts/panel_collection/panel_collection.gml @@ -608,9 +608,9 @@ function Panel_Collection() : PanelContent() constructor { var _favs = struct_get_names(global.FAV_NODES); for( var i = 0, n = array_length(_favs); i < n; i++ ) { var _nodeIndex = _favs[i]; - if(!ds_map_exists(ALL_NODES, _nodeIndex)) continue; + if(!struct_has(ALL_NODES, _nodeIndex)) continue; - var _node = ALL_NODES[? _nodeIndex]; + var _node = ALL_NODES[$ _nodeIndex]; if(_node.show_in_recent) ds_list_add(node_temp_list, _node); } diff --git a/scripts/panel_inspector/panel_inspector.gml b/scripts/panel_inspector/panel_inspector.gml index 5a27b2be3..1cb751fce 100644 --- a/scripts/panel_inspector/panel_inspector.gml +++ b/scripts/panel_inspector/panel_inspector.gml @@ -1141,7 +1141,7 @@ function Panel_Inspector() : PanelContent() constructor { var arr = []; for(var i = 0; i < array_length(__dialog_junction.extract_node); i++) { var _rec = __dialog_junction.extract_node[i]; - var _nod = ALL_NODES[? _rec]; + var _nod = ALL_NODES[$ _rec]; array_push(arr, menuItem(_nod.name, function(_dat) /*=>*/ { __dialog_junction.extractNode(_dat.name); }, noone, noone, noone, { name : _rec })); } diff --git a/scripts/panel_node_data_gen/panel_node_data_gen.gml b/scripts/panel_node_data_gen/panel_node_data_gen.gml index a95843166..5477a12f7 100644 --- a/scripts/panel_node_data_gen/panel_node_data_gen.gml +++ b/scripts/panel_node_data_gen/panel_node_data_gen.gml @@ -31,9 +31,10 @@ function Panel_Node_Data_Gen() : PanelContent() constructor { title = "Dump node data"; auto_pin = true; - amo = ds_map_size(ALL_NODES); + + key = struct_get_names(ALL_NODES); + amo = array_length(key); cur = 0; - key = ds_map_find_first(ALL_NODES); LOADING = true; NODE_EXTRACT = true; @@ -48,13 +49,12 @@ function Panel_Node_Data_Gen() : PanelContent() constructor { game_set_speed(99999, gamespeed_fps); function drawContent(panel) { - var _n = ALL_NODES[? key]; + var _n = ALL_NODES[$ key[cur]]; var _b = _n.build(0, 0); - key = ds_map_find_next(ALL_NODES, key); draw_clear_alpha(COLORS.panel_bg_clear, 0); draw_set_text(f_p0, fa_center, fa_top, COLORS._main_text); - draw_text_add(w / 2, ui(8), cur + 2 < amo? $"Dumping node data [{key}]" : "Writing JSON"); + draw_text_add(w / 2, ui(8), cur + 2 < amo? $"Dumping node data [{key[cur]}]" : "Writing JSON"); var bx0 = ui(8); var by0 = ui(40); diff --git a/scripts/panel_nodes/panel_nodes.gml b/scripts/panel_nodes/panel_nodes.gml index 5a002a7e2..e8ef29ddf 100644 --- a/scripts/panel_nodes/panel_nodes.gml +++ b/scripts/panel_nodes/panel_nodes.gml @@ -75,7 +75,7 @@ function Panel_Nodes() : PanelContent() constructor { graphFocusNode(node); bx -= ui(32); - var _n = ALL_NODES[? instanceof(node)]; + var _n = ALL_NODES[$ instanceof(node)]; var spr = _n.spr; draw_sprite_ui(spr, 1, _x0 + ui(4 + 16), _y + hg / 2, 0.25, 0.25, 0, c_white, 1); diff --git a/scripts/testing_script/testing_script.gml b/scripts/testing_script/testing_script.gml index 090b57b71..1e5c953c9 100644 --- a/scripts/testing_script/testing_script.gml +++ b/scripts/testing_script/testing_script.gml @@ -115,8 +115,7 @@ function __test_load_current_collections() { } function __test_load_all_nodes() { - var amo = ds_map_size(ALL_NODES); - var k = ds_map_find_first(ALL_NODES); + var key = struct_get_names(ALL_NODES); var xx = 0; var yy = 0; var col = 10; @@ -129,11 +128,12 @@ function __test_load_all_nodes() { var inded = 1000; LOADING = true; - repeat(amo) { + for( var i = 0, n = array_length(key); i < n; i++ ) { + var k = key[i]; + if(index > inded) break; if(index > indst) { - var node = ALL_NODES[? k]; - k = ds_map_find_next(ALL_NODES, k); + var node = ALL_NODES[$ k]; if(!node.testable) continue; @@ -147,11 +147,11 @@ function __test_load_all_nodes() { yy += 160; } else xx += 160; - if(b) { - if(outj) - for( var i = 0; i < array_length(b.inputs); i++ ) { - if(b.inputs[i].type != VALUE_TYPE.surface) continue; - b.inputs[i].setFrom(outj); + + if(b && outj) { + for( var j = 0; j < array_length(b.inputs); j++ ) { + if(b.inputs[j].type != VALUE_TYPE.surface) continue; + b.inputs[j].setFrom(outj); break; } }