[Cache] Add option to disable data serialization.

This commit is contained in:
Tanasart 2025-02-15 11:41:59 +07:00
parent 374f885d9c
commit 4474abf20d
18 changed files with 202 additions and 22 deletions

View file

@ -284,6 +284,7 @@
{"name":"FLIP","order":19,"path":"extensions/FLIP/FLIP.yy",},
{"name":"gameframe_native","order":2,"path":"extensions/gameframe_native/gameframe_native.yy",},
{"name":"GMSSimpleMIDI","order":17,"path":"extensions/GMSSimpleMIDI/GMSSimpleMIDI.yy",},
{"name":"sh_tile","order":7,"path":"shaders/sh_tile/sh_tile.yy",},
{"name":"libborderless","order":1,"path":"extensions/libborderless/libborderless.yy",},
{"name":"libdlgmodule","order":15,"path":"extensions/libdlgmodule/libdlgmodule.yy",},
{"name":"libfilesystem","order":14,"path":"extensions/libfilesystem/libfilesystem.yy",},
@ -815,7 +816,7 @@
{"name":"node_colors_replace","order":10,"path":"scripts/node_colors_replace/node_colors_replace.yy",},
{"name":"node_combine_hsv","order":2,"path":"scripts/node_combine_hsv/node_combine_hsv.yy",},
{"name":"node_compare","order":16,"path":"scripts/node_compare/node_compare.yy",},
{"name":"node_composite_tag","order":8,"path":"scripts/node_composite_tag/node_composite_tag.yy",},
{"name":"node_composite_tag","order":9,"path":"scripts/node_composite_tag/node_composite_tag.yy",},
{"name":"node_composite","order":3,"path":"scripts/node_composite/node_composite.yy",},
{"name":"node_condition","order":4,"path":"scripts/node_condition/node_condition.yy",},
{"name":"node_connection_path","order":1,"path":"scripts/node_connection_path/node_connection_path.yy",},
@ -1199,7 +1200,7 @@
{"name":"node_surface_data","order":5,"path":"scripts/node_surface_data/node_surface_data.yy",},
{"name":"node_surface_from_buffer","order":2,"path":"scripts/node_surface_from_buffer/node_surface_from_buffer.yy",},
{"name":"node_surface_replace","order":14,"path":"scripts/node_surface_replace/node_surface_replace.yy",},
{"name":"node_surface_tag","order":7,"path":"scripts/node_surface_tag/node_surface_tag.yy",},
{"name":"node_surface_tag","order":8,"path":"scripts/node_surface_tag/node_surface_tag.yy",},
{"name":"node_surface_to_color","order":1,"path":"scripts/node_surface_to_color/node_surface_to_color.yy",},
{"name":"node_svg","order":7,"path":"scripts/node_svg/node_svg.yy",},
{"name":"node_switch","order":9,"path":"scripts/node_switch/node_switch.yy",},
@ -2438,6 +2439,7 @@
{"name":"s_node_tile_rule","order":4,"path":"sprites/s_node_tile_rule/s_node_tile_rule.yy",},
{"name":"s_node_tile_tilemap_export","order":3,"path":"sprites/s_node_tile_tilemap_export/s_node_tile_tilemap_export.yy",},
{"name":"s_node_tile_tileset","order":1,"path":"sprites/s_node_tile_tileset/s_node_tile_tileset.yy",},
{"name":"s_node_tile","order":28,"path":"sprites/s_node_tile/s_node_tile.yy",},
{"name":"s_node_time_remap","order":68,"path":"sprites/s_node_time_remap/s_node_time_remap.yy",},
{"name":"s_node_timeline_preview","order":2,"path":"sprites/s_node_timeline_preview/s_node_timeline_preview.yy",},
{"name":"s_node_to_number","order":2,"path":"sprites/s_node_to_number/s_node_to_number.yy",},

View file

@ -1104,6 +1104,7 @@
{"$GMIncludedFile":"","%Name":"tooltip_spr.png","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Transform/Node_Skew","name":"tooltip_spr.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Transform/Node_Tile_Random","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"tooltip_spr.png","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Transform/Node_Tile_Random","name":"tooltip_spr.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Transform/Node_Tile","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Transform/Node_Transform","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"tooltip_spr.png","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Transform/Node_Transform","name":"tooltip_spr.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Transform/Node_Warp","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
@ -1317,11 +1318,7 @@
{"$GMIncludedFile":"","%Name":"Canvas.png","CopyToMask":-1,"filePath":"datafiles/data/Welcome files/Templates","name":"Canvas.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"Canvas.pxc","CopyToMask":-1,"filePath":"datafiles/data/Welcome files/Templates","name":"Canvas.pxc","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"Welcome files.zip","CopyToMask":-1,"filePath":"datafiles/data/Welcome files","name":"Welcome files.zip","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"dllcredits.txt","ConfigValues":{
"Itch":{
"CopyToMask":"0",
},
},"CopyToMask":0,"filePath":"datafiles","name":"dllcredits.txt","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"dllcredits.txt","ConfigValues":{"Itch":{"CopyToMask":"0",},},"CopyToMask":0,"filePath":"datafiles","name":"dllcredits.txt","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"dlltest1.dll","CopyToMask":-1,"filePath":"datafiles","name":"dlltest1.dll","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"ffmpeg.exe","CopyToMask":-1,"filePath":"datafiles/ffmpeg/bin","name":"ffmpeg.exe","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"LICENSE","CopyToMask":-1,"filePath":"datafiles/ffmpeg","name":"LICENSE","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
@ -1340,11 +1337,7 @@
{"$GMIncludedFile":"","%Name":"mf.dll","CopyToMask":-1,"filePath":"datafiles","name":"mf.dll","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"mfcore.dll","CopyToMask":-1,"filePath":"datafiles","name":"mfcore.dll","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"mfplat.dll","CopyToMask":-1,"filePath":"datafiles","name":"mfplat.dll","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"PixelComposer_profile-2.provisionprofile","ConfigValues":{
"Itch":{
"CopyToMask":"2",
},
},"CopyToMask":-1,"filePath":"datafiles","name":"PixelComposer_profile-2.provisionprofile","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"PixelComposer_profile-2.provisionprofile","ConfigValues":{"Itch":{"CopyToMask":"2",},},"CopyToMask":-1,"filePath":"datafiles","name":"PixelComposer_profile-2.provisionprofile","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"data.win","CopyToMask":-1,"filePath":"datafiles/report","name":"data.win","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"execute_shell_simple_ext_x64.dll","CopyToMask":-1,"filePath":"datafiles/report","name":"execute_shell_simple_ext_x64.dll","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"options.ini","CopyToMask":-1,"filePath":"datafiles/report","name":"options.ini","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
@ -2952,6 +2945,7 @@
{"id":{"name":"sh_FXAA","path":"shaders/sh_FXAA/sh_FXAA.yy",},},
{"id":{"name":"sh_gamma_map","path":"shaders/sh_gamma_map/sh_gamma_map.yy",},},
{"id":{"name":"sh_get_max_downsampled","path":"shaders/sh_get_max_downsampled/sh_get_max_downsampled.yy",},},
{"id":{"name":"sh_tile","path":"shaders/sh_tile/sh_tile.yy",},},
{"id":{"name":"sh_get_min_downsampled","path":"shaders/sh_get_min_downsampled/sh_get_min_downsampled.yy",},},
{"id":{"name":"sh_glow","path":"shaders/sh_glow/sh_glow.yy",},},
{"id":{"name":"sh_gradient_display_alpha","path":"shaders/sh_gradient_display_alpha/sh_gradient_display_alpha.yy",},},
@ -3801,6 +3795,7 @@
{"id":{"name":"s_node_tile_rule","path":"sprites/s_node_tile_rule/s_node_tile_rule.yy",},},
{"id":{"name":"s_node_tile_tilemap_export","path":"sprites/s_node_tile_tilemap_export/s_node_tile_tilemap_export.yy",},},
{"id":{"name":"s_node_tile_tileset","path":"sprites/s_node_tile_tileset/s_node_tile_tileset.yy",},},
{"id":{"name":"s_node_tile","path":"sprites/s_node_tile/s_node_tile.yy",},},
{"id":{"name":"s_node_time_remap","path":"sprites/s_node_time_remap/s_node_time_remap.yy",},},
{"id":{"name":"s_node_timeline_preview","path":"sprites/s_node_timeline_preview/s_node_timeline_preview.yy",},},
{"id":{"name":"s_node_to_number","path":"sprites/s_node_to_number/s_node_to_number.yy",},},

Binary file not shown.

View file

@ -0,0 +1,10 @@
{
"name":"Tile",
"tooltip":"Repeat images on a larger surface.",
"spr":"s_node_tile",
"pxc_version":118090,
"baseNode":"Node_Tile",
"io":[
"surface"
],
}

View file

@ -332,7 +332,8 @@
"Node_Composite",
"Node_9Slice",
"Node_Padding",
"Node_Tile_Random"
"Node_Tile",
"Node_Tile_Random",
]
},
{

View file

@ -2,6 +2,7 @@
event_inherited();
#region data
dialog_resizable = true;
dialog_w = ui(320);
dialog_h = ui(400);

View file

@ -2,6 +2,7 @@
event_inherited();
#region data
dialog_resizable = true;
dialog_w = ui(320);
dialog_h = ui(400);

View file

@ -54,6 +54,7 @@ function Node_Cache(_x, _y, _group = noone) : __Node_Cache(_x, _y, _group) const
static postDeserialize = function() {
refreshCacheGroup();
if(!attributes.serialize) return;
if(!struct_has(load_map, "cache")) return;
cache_content = json_try_parse(load_map.cache);
cache_loading_progress = 0;

View file

@ -84,6 +84,7 @@ function Node_Cache_Array(_x, _y, _group = noone) : __Node_Cache(_x, _y, _group)
static postDeserialize = function() {
refreshCacheGroup();
if(!attributes.serialize) return;
if(!struct_has(load_map, "cache")) return;
cache_content = json_try_parse(load_map.cache);
cache_loading_progress = 0;

View file

@ -11,9 +11,13 @@ function __Node_Cache(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
group_alpha = 0;
vertex_hash = "";
attributes.serialize = true;
array_push(attributeEditors, "Cache");
array_push(attributeEditors, [ "Serizalize Data", function() /*=>*/ {return attributes.serialize}, new checkBox(function() /*=>*/ { attributes.serialize = !attributes.serialize; }) ]);
setTrigger(1, "Generate cache group", [ THEME.cache_group, 0, COLORS._main_icon ]);
if(NOT_LOAD) run_in(1, function() { onInspector1Update(); });
if(NOT_LOAD) run_in(1, function() /*=>*/ {return onInspector1Update()});
static removeNode = function(node) {
if(node.cache_group != self) return;
@ -36,7 +40,8 @@ function __Node_Cache(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
}
static enableNodeGroup = function() {
if(LOADING || APPENDING) return;
if(LOADING || APPENDING) return;
if(!attributes.serialize) return;
for( var i = 0, n = array_length(cache_group_members); i < n; i++ )
cache_group_members[i].renderActive = true;
@ -44,7 +49,8 @@ function __Node_Cache(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
}
static disableNodeGroup = function() {
if(LOADING || APPENDING) return;
if(LOADING || APPENDING) return;
if(!attributes.serialize) return;
if(IS_PLAYING && IS_LAST_FRAME)
for( var i = 0, n = array_length(cache_group_members); i < n; i++ )

View file

@ -598,6 +598,9 @@ function Node_Composite(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
var amo = getInputAmount();
var anchors = array_create(array_length(inputs));
if(amo == 0) dynamic_input_inspecting = noone;
dynamic_input_inspecting = min(dynamic_input_inspecting, amo - 1);
for(var i = 0; i < amo; i++) {
var vis = _vis[i];
var sel = _sel[i];

View file

@ -1,15 +1,49 @@
function Node_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Tile";
name = "Tile";
newInput(0, nodeValue_Surface("Base texture", self));
newInput(0, nodeValue_Surface("Surface In", self));
newInput(1, nodeValue_Surface("Border texture", self));
newInput(1, nodeValue_Enum_Scroll("Scaling Type", self, 0, [ "Fix Dimension", "Relative To Input" ]));
newOutput(0, nodeValue_Output("", self, VALUE_TYPE.surface, noone));
newInput(2, nodeValue_Dimension(self));
newInput(3, nodeValue_Vec2("Amount", self, [ 2, 2 ]));
newOutput(0, nodeValue_Output("Surface Out", self, VALUE_TYPE.surface, noone));
input_display_list = [ 0 ];
input_display_list = [ 0,
["Tiling", false], 1, 2, 3,
];
static step = function() {}
static processData = function(_outSurf, _data, _output_index, _array_index = 0) { return _outSurf; }
static processData = function(_outSurf, _data, _output_index, _array_index = 0) {
var _surf = _data[0];
var _type = _data[1];
var _dim = _data[2];
var _amo = _data[3];
inputs[2].setVisible(_type == 0);
inputs[3].setVisible(_type == 1);
if(!is_surface(_surf)) return _outSurf;
var _idim = surface_get_dimension(_surf);
var _sw = _dim[0];
var _sh = _dim[1];
if(_type == 1) {
_sw = _idim[0] * _amo[0];
_sh = _idim[1] * _amo[1];
}
_outSurf = surface_verify(_outSurf, _sw, _sh);
surface_set_shader(_outSurf, sh_tile);
shader_set_2("scale", [ _sw / _idim[0], _sh / _idim[1] ]);
draw_surface_stretched(_surf, 0, 0, _sw, _sh);
surface_reset_shader();
return _outSurf;
}
}

View file

@ -0,0 +1,8 @@
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
uniform vec2 scale;
void main() {
gl_FragColor = texture2D(gm_BaseTexture, fract(v_vTexcoord * scale));
}

View file

@ -0,0 +1,14 @@
attribute vec3 in_Position; // (x, y, z)
attribute vec4 in_Colour; // (r, g, b, a)
attribute vec2 in_TextureCoord; // (u, v)
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
void main() {
vec4 object_space_pos = vec4(in_Position.x, in_Position.y, in_Position.z, 1.0);
gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos;
v_vColour = in_Colour;
v_vTexcoord = in_TextureCoord;
}

View file

@ -0,0 +1,13 @@
{
"$GMShader":"",
"%Name":"sh_tile",
"name":"sh_tile",
"parent":{
"name":"compose",
"path":"folders/nodes/data/compose.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",
"tags":[],
"type":1,
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

View file

@ -0,0 +1,90 @@
{
"$GMSprite":"",
"%Name":"s_node_tile",
"bboxMode":0,
"bbox_bottom":61,
"bbox_left":2,
"bbox_right":61,
"bbox_top":2,
"collisionKind":1,
"collisionTolerance":0,
"DynamicTexturePage":false,
"edgeFiltering":false,
"For3D":false,
"frames":[
{"$GMSpriteFrame":"","%Name":"1887b28a-646c-4674-a4ea-009b6c808c29","name":"1887b28a-646c-4674-a4ea-009b6c808c29","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
],
"gridX":0,
"gridY":0,
"height":64,
"HTile":false,
"layers":[
{"$GMImageLayer":"","%Name":"517e9ab9-bb05-41ee-8ec0-23ee012c42af","blendMode":0,"displayName":"default","isLocked":false,"name":"517e9ab9-bb05-41ee-8ec0-23ee012c42af","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
],
"name":"s_node_tile",
"nineSlice":null,
"origin":4,
"parent":{
"name":"transform",
"path":"folders/nodes/icons/transform.yy",
},
"preMultiplyAlpha":false,
"resourceType":"GMSprite",
"resourceVersion":"2.0",
"sequence":{
"$GMSequence":"",
"%Name":"s_node_tile",
"autoRecord":true,
"backdropHeight":768,
"backdropImageOpacity":0.5,
"backdropImagePath":"",
"backdropWidth":1366,
"backdropXOffset":0.0,
"backdropYOffset":0.0,
"events":{
"$KeyframeStore<MessageEventKeyframe>":"",
"Keyframes":[],
"resourceType":"KeyframeStore<MessageEventKeyframe>",
"resourceVersion":"2.0",
},
"eventStubScript":null,
"eventToFunction":{},
"length":1.0,
"lockOrigin":false,
"moments":{
"$KeyframeStore<MomentsEventKeyframe>":"",
"Keyframes":[],
"resourceType":"KeyframeStore<MomentsEventKeyframe>",
"resourceVersion":"2.0",
},
"name":"s_node_tile",
"playback":1,
"playbackSpeed":30.0,
"playbackSpeedType":0,
"resourceType":"GMSequence",
"resourceVersion":"2.0",
"showBackdrop":true,
"showBackdropImage":false,
"timeUnits":1,
"tracks":[
{"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore<SpriteFrameKeyframe>":"","Keyframes":[
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"1887b28a-646c-4674-a4ea-009b6c808c29","path":"sprites/s_node_tile/s_node_tile.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"c7e8ee4a-a518-43e3-aefa-b822966a84d0","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
],"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"2.0",},"modifiers":[],"name":"frames","resourceType":"GMSpriteFramesTrack","resourceVersion":"2.0","spriteId":null,"trackColour":0,"tracks":[],"traits":0,},
],
"visibleRange":null,
"volume":1.0,
"xorigin":32,
"yorigin":32,
},
"swatchColours":null,
"swfPrecision":0.5,
"textureGroupId":{
"name":"Default",
"path":"texturegroups/Default",
},
"type":0,
"VTile":false,
"width":64,
}