mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2025-01-23 11:28:06 +01:00
interlace node
This commit is contained in:
parent
3d4fe3447f
commit
be6ba22147
19 changed files with 332 additions and 23 deletions
|
@ -836,6 +836,7 @@
|
|||
{"name":"node_image_grid","order":3,"path":"scripts/node_image_grid/node_image_grid.yy",},
|
||||
{"name":"node_image_sequence","order":3,"path":"scripts/node_image_sequence/node_image_sequence.yy",},
|
||||
{"name":"node_image_sheet","order":4,"path":"scripts/node_image_sheet/node_image_sheet.yy",},
|
||||
{"name":"node_interlaced","order":25,"path":"scripts/node_interlaced/node_interlaced.yy",},
|
||||
{"name":"node_interpret_number","order":3,"path":"scripts/node_interpret_number/node_interpret_number.yy",},
|
||||
{"name":"node_invert","order":6,"path":"scripts/node_invert/node_invert.yy",},
|
||||
{"name":"node_isosurf","order":3,"path":"scripts/node_isosurf/node_isosurf.yy",},
|
||||
|
@ -1455,6 +1456,7 @@
|
|||
{"name":"sh_grid_tri","order":3,"path":"shaders/sh_grid_tri/sh_grid_tri.yy",},
|
||||
{"name":"sh_herringbone_tile","order":5,"path":"shaders/sh_herringbone_tile/sh_herringbone_tile.yy",},
|
||||
{"name":"sh_image_trace","order":34,"path":"shaders/sh_image_trace/sh_image_trace.yy",},
|
||||
{"name":"sh_interlaced","order":58,"path":"shaders/sh_interlaced/sh_interlaced.yy",},
|
||||
{"name":"sh_invert","order":17,"path":"shaders/sh_invert/sh_invert.yy",},
|
||||
{"name":"sh_jpeg_recons","order":1,"path":"shaders/sh_jpeg_recons/sh_jpeg_recons.yy",},
|
||||
{"name":"sh_kuwahara_ani","order":37,"path":"shaders/sh_kuwahara_ani/sh_kuwahara_ani.yy",},
|
||||
|
@ -1839,6 +1841,7 @@
|
|||
{"name":"s_node_image_transform_3d","order":25,"path":"sprites/s_node_image_transform_3d/s_node_image_transform_3d.yy",},
|
||||
{"name":"s_node_image","order":1,"path":"sprites/s_node_image/s_node_image.yy",},
|
||||
{"name":"s_node_input","order":6,"path":"sprites/s_node_input/s_node_input.yy",},
|
||||
{"name":"s_node_interlace","order":68,"path":"sprites/s_node_interlace/s_node_interlace.yy",},
|
||||
{"name":"s_node_interpret_number","order":30,"path":"sprites/s_node_interpret_number/s_node_interpret_number.yy",},
|
||||
{"name":"s_node_invert","order":30,"path":"sprites/s_node_invert/s_node_invert.yy",},
|
||||
{"name":"s_node_isosurf","order":1,"path":"sprites/s_node_isosurf/s_node_isosurf.yy",},
|
||||
|
|
|
@ -1245,6 +1245,7 @@
|
|||
{"id":{"name":"node_image_sequence","path":"scripts/node_image_sequence/node_image_sequence.yy",},},
|
||||
{"id":{"name":"node_image_sheet","path":"scripts/node_image_sheet/node_image_sheet.yy",},},
|
||||
{"id":{"name":"node_image","path":"scripts/node_image/node_image.yy",},},
|
||||
{"id":{"name":"node_interlaced","path":"scripts/node_interlaced/node_interlaced.yy",},},
|
||||
{"id":{"name":"node_interpret_number","path":"scripts/node_interpret_number/node_interpret_number.yy",},},
|
||||
{"id":{"name":"node_invert","path":"scripts/node_invert/node_invert.yy",},},
|
||||
{"id":{"name":"node_isosurf","path":"scripts/node_isosurf/node_isosurf.yy",},},
|
||||
|
@ -1961,6 +1962,7 @@
|
|||
{"id":{"name":"sh_grid","path":"shaders/sh_grid/sh_grid.yy",},},
|
||||
{"id":{"name":"sh_herringbone_tile","path":"shaders/sh_herringbone_tile/sh_herringbone_tile.yy",},},
|
||||
{"id":{"name":"sh_image_trace","path":"shaders/sh_image_trace/sh_image_trace.yy",},},
|
||||
{"id":{"name":"sh_interlaced","path":"shaders/sh_interlaced/sh_interlaced.yy",},},
|
||||
{"id":{"name":"sh_interpret_number","path":"shaders/sh_interpret_number/sh_interpret_number.yy",},},
|
||||
{"id":{"name":"sh_invert","path":"shaders/sh_invert/sh_invert.yy",},},
|
||||
{"id":{"name":"sh_jpeg_dct","path":"shaders/sh_jpeg_dct/sh_jpeg_dct.yy",},},
|
||||
|
@ -2401,6 +2403,7 @@
|
|||
{"id":{"name":"s_node_image_transform_3d","path":"sprites/s_node_image_transform_3d/s_node_image_transform_3d.yy",},},
|
||||
{"id":{"name":"s_node_image","path":"sprites/s_node_image/s_node_image.yy",},},
|
||||
{"id":{"name":"s_node_input","path":"sprites/s_node_input/s_node_input.yy",},},
|
||||
{"id":{"name":"s_node_interlace","path":"sprites/s_node_interlace/s_node_interlace.yy",},},
|
||||
{"id":{"name":"s_node_interpret_number","path":"sprites/s_node_interpret_number/s_node_interpret_number.yy",},},
|
||||
{"id":{"name":"s_node_invert","path":"sprites/s_node_invert/s_node_invert.yy",},},
|
||||
{"id":{"name":"s_node_isosurf","path":"sprites/s_node_isosurf/s_node_isosurf.yy",},},
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
LATEST_VERSION = 11700;
|
||||
VERSION = 11760;
|
||||
SAVE_VERSION = 11700;
|
||||
VERSION_STRING = "1.17.6";
|
||||
VERSION_STRING = "1.17.6.001";
|
||||
BUILD_NUMBER = 11760;
|
||||
|
||||
globalvar HOTKEYS, HOTKEY_CONTEXT;
|
||||
|
|
12
scripts/node_interlaced/node_alpha_to_grey.yy
Normal file
12
scripts/node_interlaced/node_alpha_to_grey.yy
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"isDnD": false,
|
||||
"isCompatibility": false,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/nodes/data/filter.yy",
|
||||
},
|
||||
"resourceVersion": "1.0",
|
||||
"name": "node_alpha_to_grey",
|
||||
"tags": [],
|
||||
"resourceType": "GMScript",
|
||||
}
|
12
scripts/node_interlaced/node_bw.yy
Normal file
12
scripts/node_interlaced/node_bw.yy
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"isDnD": false,
|
||||
"isCompatibility": false,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/nodes/data/filter.yy",
|
||||
},
|
||||
"resourceVersion": "1.0",
|
||||
"name": "node_bw",
|
||||
"tags": [],
|
||||
"resourceType": "GMScript",
|
||||
}
|
12
scripts/node_interlaced/node_color_adjustment.yy
Normal file
12
scripts/node_interlaced/node_color_adjustment.yy
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"isDnD": false,
|
||||
"isCompatibility": false,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/nodes/data/filter.yy",
|
||||
},
|
||||
"resourceVersion": "1.0",
|
||||
"name": "node_color_adjustment",
|
||||
"tags": [],
|
||||
"resourceType": "GMScript",
|
||||
}
|
12
scripts/node_interlaced/node_color_replacement.yy
Normal file
12
scripts/node_interlaced/node_color_replacement.yy
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"isDnD": false,
|
||||
"isCompatibility": false,
|
||||
"parent": {
|
||||
"name": "process",
|
||||
"path": "folders/nodes/data/process.yy",
|
||||
},
|
||||
"resourceVersion": "1.0",
|
||||
"name": "node_color_replacement",
|
||||
"tags": [],
|
||||
"resourceType": "GMScript",
|
||||
}
|
12
scripts/node_interlaced/node_greyscale.yy
Normal file
12
scripts/node_interlaced/node_greyscale.yy
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"isDnD": false,
|
||||
"isCompatibility": false,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/nodes/data/filter.yy",
|
||||
},
|
||||
"resourceVersion": "1.0",
|
||||
"name": "node_greyscale",
|
||||
"tags": [],
|
||||
"resourceType": "GMScript",
|
||||
}
|
72
scripts/node_interlaced/node_interlaced.gml
Normal file
72
scripts/node_interlaced/node_interlaced.gml
Normal file
|
@ -0,0 +1,72 @@
|
|||
function Node_Interlaced(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
|
||||
name = "Interlace";
|
||||
|
||||
inputs[| 0] = nodeValue("Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone);
|
||||
|
||||
inputs[| 1] = nodeValue("Active", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true);
|
||||
active_index = 1;
|
||||
|
||||
inputs[| 2] = nodeValue("Mask", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone);
|
||||
|
||||
inputs[| 3] = nodeValue("Mix", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
|
||||
.setDisplay(VALUE_DISPLAY.slider);
|
||||
|
||||
inputs[| 4] = nodeValue("Channel", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0b1111)
|
||||
.setDisplay(VALUE_DISPLAY.toggle, { data: array_create(4, THEME.inspector_channel) });
|
||||
|
||||
__init_mask_modifier(2); // inputs 5, 6
|
||||
|
||||
inputs[| 7] = nodeValue("Axis", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
|
||||
.setDisplay(VALUE_DISPLAY.enum_button, [ "X", "Y" ]);
|
||||
|
||||
inputs[| 8] = nodeValue("Size", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1);
|
||||
|
||||
inputs[| 9] = nodeValue("Invert", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
|
||||
|
||||
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
|
||||
|
||||
temp_surface = [ ];
|
||||
|
||||
input_display_list = [ 1,
|
||||
["Surface", false], 0, 2, 3, 4,
|
||||
["Effects", false], 7, 8, 9,
|
||||
];
|
||||
|
||||
attribute_surface_depth();
|
||||
|
||||
static step = function() { #region
|
||||
__step_mask_modifier();
|
||||
|
||||
} #endregion
|
||||
|
||||
static processData = function(_outSurf, _data, _output_index, _array_index) { #region
|
||||
var _surf = _data[0];
|
||||
var _axis = _data[7];
|
||||
var _size = _data[8];
|
||||
var _invt = _data[9];
|
||||
|
||||
var _dim = surface_get_dimension(_surf);
|
||||
|
||||
surface_set_shader(_outSurf, sh_interlaced);
|
||||
shader_set_i("useSurf", CURRENT_FRAME > 1);
|
||||
shader_set_surface("prevFrame", array_safe_get(temp_surface, _array_index));
|
||||
shader_set_2("dimension", _dim);
|
||||
shader_set_i("axis", _axis);
|
||||
shader_set_i("invert", _invt);
|
||||
shader_set_f("size", _size);
|
||||
|
||||
draw_surface_safe(_surf);
|
||||
surface_reset_shader();
|
||||
|
||||
temp_surface[_array_index] = surface_verify(array_safe_get(temp_surface, _array_index), _dim[0], _dim[1]);
|
||||
surface_set_shader(temp_surface[_array_index], noone);
|
||||
draw_surface_safe(_surf);
|
||||
surface_reset_shader();
|
||||
|
||||
__process_mask_modifier(_data);
|
||||
_outSurf = mask_apply(_data[0], _outSurf, _data[2], _data[3]);
|
||||
_outSurf = channel_apply(_data[0], _outSurf, _data[4]);
|
||||
|
||||
return _outSurf;
|
||||
} #endregion
|
||||
}
|
13
scripts/node_interlaced/node_interlaced.yy
Normal file
13
scripts/node_interlaced/node_interlaced.yy
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"$GMScript":"",
|
||||
"%Name":"node_interlaced",
|
||||
"isCompatibility":false,
|
||||
"isDnD":false,
|
||||
"name":"node_interlaced",
|
||||
"parent":{
|
||||
"name":"effects",
|
||||
"path":"folders/nodes/data/filter/effects.yy",
|
||||
},
|
||||
"resourceType":"GMScript",
|
||||
"resourceVersion":"2.0",
|
||||
}
|
12
scripts/node_interlaced/node_outline.yy
Normal file
12
scripts/node_interlaced/node_outline.yy
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"isDnD": false,
|
||||
"isCompatibility": false,
|
||||
"parent": {
|
||||
"name": "process",
|
||||
"path": "folders/nodes/data/process.yy",
|
||||
},
|
||||
"resourceVersion": "1.0",
|
||||
"name": "node_outline",
|
||||
"tags": [],
|
||||
"resourceType": "GMScript",
|
||||
}
|
|
@ -39,7 +39,7 @@ function Node_Processor(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
|||
|
||||
static processData = function(_outSurf, _data, _output_index, _array_index = 0) { return _outSurf; }
|
||||
|
||||
static getSingleValue = function(_index, _arr = preview_index, output = false) { #region
|
||||
static getSingleValue = function(_index, _arr = preview_index, output = false) {
|
||||
var _l = output? outputs : inputs;
|
||||
var _n = _l[| _index];
|
||||
var _in = output? _n.getValue() : getInputData(_index);
|
||||
|
@ -57,9 +57,9 @@ function Node_Processor(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
|||
}
|
||||
|
||||
return array_safe_get_fast(_in, _aIndex);
|
||||
} #endregion
|
||||
}
|
||||
|
||||
static getDimension = function(arr = 0) { #region
|
||||
static getDimension = function(arr = 0) {
|
||||
if(dimension_index == -1) return [ 1, 1 ];
|
||||
|
||||
var _in = getSingleValue(dimension_index, arr);
|
||||
|
@ -74,9 +74,9 @@ function Node_Processor(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
|||
return _in;
|
||||
|
||||
return [1, 1];
|
||||
} #endregion
|
||||
}
|
||||
|
||||
static processDataArray = function(outIndex) { #region
|
||||
static processDataArray = function(outIndex) {
|
||||
var _output = outputs[| outIndex];
|
||||
var _out = _output.getValue();
|
||||
var _atlas = false;
|
||||
|
@ -214,9 +214,9 @@ function Node_Processor(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
|||
}
|
||||
|
||||
return _out;
|
||||
} #endregion
|
||||
}
|
||||
|
||||
static processBatchOutput = function() { #region
|
||||
static processBatchOutput = function() {
|
||||
var _is = ds_list_size(inputs);
|
||||
var _os = ds_list_size(outputs);
|
||||
var _dep = attrDepth();
|
||||
|
@ -277,19 +277,19 @@ function Node_Processor(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
|||
for( var i = 0, n = _os; i < n; i++ )
|
||||
outputs[| i].setValue(_outputs[i]);
|
||||
|
||||
} #endregion
|
||||
}
|
||||
|
||||
static processOutput = function() { #region
|
||||
static processOutput = function() {
|
||||
for(var i = 0; i < ds_list_size(outputs); i++) {
|
||||
var val = outputs[| i].process_array? processDataArray(i) : processData(outputs[| i].getValue(), noone, i);
|
||||
if(val != undefined)
|
||||
outputs[| i].setValue(val);
|
||||
}
|
||||
} #endregion
|
||||
}
|
||||
|
||||
static preGetInputs = function() {}
|
||||
|
||||
static getInputs = function() { #region
|
||||
static getInputs = function() {
|
||||
preGetInputs();
|
||||
|
||||
var _len = ds_list_size(inputs);
|
||||
|
@ -361,9 +361,9 @@ function Node_Processor(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
|||
all_inputs[i][l] = inputs[| i].arrayBalance(_in[_index]);
|
||||
} #endregion
|
||||
|
||||
} #endregion
|
||||
}
|
||||
|
||||
static update = function(frame = CURRENT_FRAME) { #region
|
||||
static update = function(frame = CURRENT_FRAME) {
|
||||
processData_prebatch();
|
||||
|
||||
if(batch_output) processBatchOutput();
|
||||
|
@ -373,23 +373,23 @@ function Node_Processor(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
|||
|
||||
postProcess();
|
||||
postPostProcess();
|
||||
} #endregion
|
||||
}
|
||||
|
||||
static postProcess = function() {}
|
||||
|
||||
static postPostProcess = function() {}
|
||||
|
||||
static processSerialize = function(_map) { #region
|
||||
static processSerialize = function(_map) {
|
||||
_map.array_process = attributes.array_process;
|
||||
} #endregion
|
||||
}
|
||||
|
||||
static processDeserialize = function() { #region
|
||||
static processDeserialize = function() {
|
||||
attributes.array_process = struct_try_get(load_map, "array_process", ARRAY_PROCESS.loop);
|
||||
} #endregion
|
||||
}
|
||||
|
||||
///////////////////// CACHE /////////////////////
|
||||
|
||||
static cacheCurrentFrameIndex = function(_frame, index) { #region
|
||||
static cacheCurrentFrameIndex = function(_frame, index) {
|
||||
cacheArrayCheck();
|
||||
if(CURRENT_FRAME < 0) return;
|
||||
if(CURRENT_FRAME >= array_length(cached_output)) return;
|
||||
|
@ -401,13 +401,13 @@ function Node_Processor(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
|||
array_safe_set(cache_result, CURRENT_FRAME, true);
|
||||
|
||||
return cached_output[CURRENT_FRAME];
|
||||
} #endregion
|
||||
}
|
||||
|
||||
static getCacheFrameIndex = function(frame = CURRENT_FRAME, index = 0) { #region
|
||||
static getCacheFrameIndex = function(frame = CURRENT_FRAME, index = 0) {
|
||||
if(frame < 0) return false;
|
||||
if(!cacheExist(frame)) return noone;
|
||||
|
||||
var surf = array_safe_get_fast(cached_output, frame);
|
||||
return array_safe_get_fast(surf, index);
|
||||
} #endregion
|
||||
}
|
||||
}
|
|
@ -612,6 +612,7 @@ function __initNodes() {
|
|||
addNodeObject(filter, "Vignette", s_node_vignette, "Node_Vignette", [1, Node_Vignette],, "Apply vignette effect to the border.").setVersion(11630);
|
||||
addNodeObject(filter, "FXAA", s_node_FXAA, "Node_FXAA", [1, Node_FXAA],, "Apply fast approximate anti-aliasing to te image.");
|
||||
addNodeObject(filter, "JPEG", s_node_JPEG, "Node_JPEG", [1, Node_JPEG],, "Apply JPEG compression to the image.").setVersion(11730);
|
||||
addNodeObject(filter, "Interlace", s_node_interlace, "Node_Interlaced", [1, Node_Interlaced],, "Apply interlace effect to an image.").setVersion(11760);
|
||||
addNodeObject(filter, "Blend Edge", s_node_blend_edge, "Node_Blend_Edge", [1, Node_Blend_Edge]).setVersion(11740);
|
||||
|
||||
ds_list_add(filter, "Colors");
|
||||
|
|
24
shaders/sh_interlaced/sh_interlaced.fsh
Normal file
24
shaders/sh_interlaced/sh_interlaced.fsh
Normal file
|
@ -0,0 +1,24 @@
|
|||
varying vec2 v_vTexcoord;
|
||||
varying vec4 v_vColour;
|
||||
|
||||
uniform int useSurf;
|
||||
uniform sampler2D prevFrame;
|
||||
|
||||
uniform vec2 dimension;
|
||||
uniform int axis;
|
||||
uniform int invert;
|
||||
uniform float size;
|
||||
|
||||
void main() {
|
||||
vec2 px = v_vTexcoord * dimension - .5;
|
||||
px /= size;
|
||||
vec2 md = mod(px, 2.);
|
||||
if(invert == 1)
|
||||
md = 1. - md;
|
||||
|
||||
gl_FragColor = vec4(0.);
|
||||
if((axis == 0 && md.y < 1.) || (axis == 1 && md.x < 1.))
|
||||
gl_FragColor = texture2D( gm_BaseTexture, v_vTexcoord );
|
||||
else if(useSurf == 1)
|
||||
gl_FragColor = texture2D( prevFrame, v_vTexcoord );
|
||||
}
|
19
shaders/sh_interlaced/sh_interlaced.vsh
Normal file
19
shaders/sh_interlaced/sh_interlaced.vsh
Normal file
|
@ -0,0 +1,19 @@
|
|||
//
|
||||
// Simple passthrough vertex shader
|
||||
//
|
||||
attribute vec3 in_Position; // (x,y,z)
|
||||
//attribute vec3 in_Normal; // (x,y,z) unused in this shader.
|
||||
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;
|
||||
}
|
12
shaders/sh_interlaced/sh_interlaced.yy
Normal file
12
shaders/sh_interlaced/sh_interlaced.yy
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"$GMShader":"",
|
||||
"%Name":"sh_interlaced",
|
||||
"name":"sh_interlaced",
|
||||
"parent":{
|
||||
"name":"filter",
|
||||
"path":"folders/shader/filter.yy",
|
||||
},
|
||||
"resourceType":"GMShader",
|
||||
"resourceVersion":"2.0",
|
||||
"type":1,
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
90
sprites/s_node_interlace/s_node_interlace.yy
Normal file
90
sprites/s_node_interlace/s_node_interlace.yy
Normal file
|
@ -0,0 +1,90 @@
|
|||
{
|
||||
"$GMSprite":"",
|
||||
"%Name":"s_node_interlace",
|
||||
"bboxMode":0,
|
||||
"bbox_bottom":63,
|
||||
"bbox_left":0,
|
||||
"bbox_right":63,
|
||||
"bbox_top":0,
|
||||
"collisionKind":1,
|
||||
"collisionTolerance":0,
|
||||
"DynamicTexturePage":false,
|
||||
"edgeFiltering":false,
|
||||
"For3D":false,
|
||||
"frames":[
|
||||
{"$GMSpriteFrame":"","%Name":"1e97260f-8a9a-4556-91ed-7d59be5b095c","name":"1e97260f-8a9a-4556-91ed-7d59be5b095c","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
],
|
||||
"gridX":0,
|
||||
"gridY":0,
|
||||
"height":64,
|
||||
"HTile":false,
|
||||
"layers":[
|
||||
{"$GMImageLayer":"","%Name":"4d76f170-b94f-4c41-81bf-c7a0647f4884","blendMode":0,"displayName":"default","isLocked":false,"name":"4d76f170-b94f-4c41-81bf-c7a0647f4884","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
|
||||
],
|
||||
"name":"s_node_interlace",
|
||||
"nineSlice":null,
|
||||
"origin":4,
|
||||
"parent":{
|
||||
"name":"filter",
|
||||
"path":"folders/nodes/icons/filter.yy",
|
||||
},
|
||||
"preMultiplyAlpha":false,
|
||||
"resourceType":"GMSprite",
|
||||
"resourceVersion":"2.0",
|
||||
"sequence":{
|
||||
"$GMSequence":"",
|
||||
"%Name":"s_node_interlace",
|
||||
"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_interlace",
|
||||
"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":"1e97260f-8a9a-4556-91ed-7d59be5b095c","path":"sprites/s_node_interlace/s_node_interlace.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"1aa16e81-d840-47ad-a004-ce3dba211fe8","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,
|
||||
}
|
Loading…
Reference in a new issue