[Shape] Add corner radius property to gear shape.
|
@ -1174,6 +1174,7 @@
|
||||||
{"name":"node_threshold","order":9,"path":"scripts/node_threshold/node_threshold.yy",},
|
{"name":"node_threshold","order":9,"path":"scripts/node_threshold/node_threshold.yy",},
|
||||||
{"name":"node_tile_random","order":16,"path":"scripts/node_tile_random/node_tile_random.yy",},
|
{"name":"node_tile_random","order":16,"path":"scripts/node_tile_random/node_tile_random.yy",},
|
||||||
{"name":"node_tile","order":5,"path":"scripts/node_tile/node_tile.yy",},
|
{"name":"node_tile","order":5,"path":"scripts/node_tile/node_tile.yy",},
|
||||||
|
{"name":"node_tiler_export","order":5,"path":"scripts/node_tiler_export/node_tiler_export.yy",},
|
||||||
{"name":"node_tiler_tileset","order":3,"path":"scripts/node_tiler_tileset/node_tiler_tileset.yy",},
|
{"name":"node_tiler_tileset","order":3,"path":"scripts/node_tiler_tileset/node_tiler_tileset.yy",},
|
||||||
{"name":"node_time_remap","order":3,"path":"scripts/node_time_remap/node_time_remap.yy",},
|
{"name":"node_time_remap","order":3,"path":"scripts/node_time_remap/node_time_remap.yy",},
|
||||||
{"name":"node_timeline_preview","order":2,"path":"scripts/node_timeline_preview/node_timeline_preview.yy",},
|
{"name":"node_timeline_preview","order":2,"path":"scripts/node_timeline_preview/node_timeline_preview.yy",},
|
||||||
|
@ -1767,6 +1768,8 @@
|
||||||
{"name":"sh_texture_remap","order":11,"path":"shaders/sh_texture_remap/sh_texture_remap.yy",},
|
{"name":"sh_texture_remap","order":11,"path":"shaders/sh_texture_remap/sh_texture_remap.yy",},
|
||||||
{"name":"sh_threshold","order":18,"path":"shaders/sh_threshold/sh_threshold.yy",},
|
{"name":"sh_threshold","order":18,"path":"shaders/sh_threshold/sh_threshold.yy",},
|
||||||
{"name":"sh_tile_random","order":32,"path":"shaders/sh_tile_random/sh_tile_random.yy",},
|
{"name":"sh_tile_random","order":32,"path":"shaders/sh_tile_random/sh_tile_random.yy",},
|
||||||
|
{"name":"sh_tile_rule_apply","order":9,"path":"shaders/sh_tile_rule_apply/sh_tile_rule_apply.yy",},
|
||||||
|
{"name":"sh_tile_rule_select","order":10,"path":"shaders/sh_tile_rule_select/sh_tile_rule_select.yy",},
|
||||||
{"name":"sh_tiler_autoterrain_apply","order":8,"path":"shaders/sh_tiler_autoterrain_apply/sh_tiler_autoterrain_apply.yy",},
|
{"name":"sh_tiler_autoterrain_apply","order":8,"path":"shaders/sh_tiler_autoterrain_apply/sh_tiler_autoterrain_apply.yy",},
|
||||||
{"name":"sh_tiler_autoterrain_mask","order":7,"path":"shaders/sh_tiler_autoterrain_mask/sh_tiler_autoterrain_mask.yy",},
|
{"name":"sh_tiler_autoterrain_mask","order":7,"path":"shaders/sh_tiler_autoterrain_mask/sh_tiler_autoterrain_mask.yy",},
|
||||||
{"name":"sh_time_remap","order":2,"path":"shaders/sh_time_remap/sh_time_remap.yy",},
|
{"name":"sh_time_remap","order":2,"path":"shaders/sh_time_remap/sh_time_remap.yy",},
|
||||||
|
@ -1826,9 +1829,10 @@
|
||||||
{"name":"s_arrow_16","order":22,"path":"sprites/s_arrow_16/s_arrow_16.yy",},
|
{"name":"s_arrow_16","order":22,"path":"sprites/s_arrow_16/s_arrow_16.yy",},
|
||||||
{"name":"s_arrow_back_32","order":23,"path":"sprites/s_arrow_back_32/s_arrow_back_32.yy",},
|
{"name":"s_arrow_back_32","order":23,"path":"sprites/s_arrow_back_32/s_arrow_back_32.yy",},
|
||||||
{"name":"s_arrow_wire_16","order":24,"path":"sprites/s_arrow_wire_16/s_arrow_wire_16.yy",},
|
{"name":"s_arrow_wire_16","order":24,"path":"sprites/s_arrow_wire_16/s_arrow_wire_16.yy",},
|
||||||
{"name":"s_autotile_11x5","order":3,"path":"sprites/s_autotile_11x5/s_autotile_11x5.yy",},
|
{"name":"s_autoterrain_11x5","order":3,"path":"sprites/s_autoterrain_11x5/s_autoterrain_11x5.yy",},
|
||||||
{"name":"s_autotile_5x3","order":1,"path":"sprites/s_autotile_5x3/s_autotile_5x3.yy",},
|
{"name":"s_autoterrain_5x3","order":1,"path":"sprites/s_autoterrain_5x3/s_autoterrain_5x3.yy",},
|
||||||
{"name":"s_autotile_8x6","order":2,"path":"sprites/s_autotile_8x6/s_autotile_8x6.yy",},
|
{"name":"s_autoterrain_5x5","order":4,"path":"sprites/s_autoterrain_5x5/s_autoterrain_5x5.yy",},
|
||||||
|
{"name":"s_autoterrain_8x6","order":2,"path":"sprites/s_autoterrain_8x6/s_autoterrain_8x6.yy",},
|
||||||
{"name":"s_biterator_b_grey_long","order":7,"path":"sprites/s_biterator_b_grey_long/s_biterator_b_grey_long.yy",},
|
{"name":"s_biterator_b_grey_long","order":7,"path":"sprites/s_biterator_b_grey_long/s_biterator_b_grey_long.yy",},
|
||||||
{"name":"s_biterator_b_grey_short","order":8,"path":"sprites/s_biterator_b_grey_short/s_biterator_b_grey_short.yy",},
|
{"name":"s_biterator_b_grey_short","order":8,"path":"sprites/s_biterator_b_grey_short/s_biterator_b_grey_short.yy",},
|
||||||
{"name":"s_biterator_b_labels","order":9,"path":"sprites/s_biterator_b_labels/s_biterator_b_labels.yy",},
|
{"name":"s_biterator_b_labels","order":9,"path":"sprites/s_biterator_b_labels/s_biterator_b_labels.yy",},
|
||||||
|
@ -2576,6 +2580,7 @@
|
||||||
{"name":"s_node_threshold","order":54,"path":"sprites/s_node_threshold/s_node_threshold.yy",},
|
{"name":"s_node_threshold","order":54,"path":"sprites/s_node_threshold/s_node_threshold.yy",},
|
||||||
{"name":"s_node_tile_random","order":22,"path":"sprites/s_node_tile_random/s_node_tile_random.yy",},
|
{"name":"s_node_tile_random","order":22,"path":"sprites/s_node_tile_random/s_node_tile_random.yy",},
|
||||||
{"name":"s_node_tileset_drawer","order":41,"path":"sprites/s_node_tileset_drawer/s_node_tileset_drawer.yy",},
|
{"name":"s_node_tileset_drawer","order":41,"path":"sprites/s_node_tileset_drawer/s_node_tileset_drawer.yy",},
|
||||||
|
{"name":"s_node_tileset_export","order":42,"path":"sprites/s_node_tileset_export/s_node_tileset_export.yy",},
|
||||||
{"name":"s_node_tileset","order":40,"path":"sprites/s_node_tileset/s_node_tileset.yy",},
|
{"name":"s_node_tileset","order":40,"path":"sprites/s_node_tileset/s_node_tileset.yy",},
|
||||||
{"name":"s_node_time_map","order":55,"path":"sprites/s_node_time_map/s_node_time_map.yy",},
|
{"name":"s_node_time_map","order":55,"path":"sprites/s_node_time_map/s_node_time_map.yy",},
|
||||||
{"name":"s_node_timeline_preview","order":2,"path":"sprites/s_node_timeline_preview/s_node_timeline_preview.yy",},
|
{"name":"s_node_timeline_preview","order":2,"path":"sprites/s_node_timeline_preview/s_node_timeline_preview.yy",},
|
||||||
|
|
|
@ -357,7 +357,6 @@
|
||||||
"IncludedFiles":[
|
"IncludedFiles":[
|
||||||
{"$GMIncludedFile":"","%Name":"Actions.zip","CopyToMask":-1,"filePath":"datafiles/data","name":"Actions.zip","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
{"$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":"icons.afdesign","CopyToMask":-1,"filePath":"datafiles/data/Actions","name":"icons.afdesign","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
{"$GMIncludedFile":"","%Name":"icons.afdesign~lock~","CopyToMask":-1,"filePath":"datafiles/data/Actions","name":"icons.afdesign~lock~","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.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":"Armature Build.png","CopyToMask":-1,"filePath":"datafiles/data/Actions/Nodes","name":"Armature Build.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.json","CopyToMask":-1,"filePath":"datafiles/data/Actions/Nodes","name":"Follow Path.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
@ -1779,6 +1778,7 @@
|
||||||
{"id":{"name":"node_threshold","path":"scripts/node_threshold/node_threshold.yy",},},
|
{"id":{"name":"node_threshold","path":"scripts/node_threshold/node_threshold.yy",},},
|
||||||
{"id":{"name":"node_tile_random","path":"scripts/node_tile_random/node_tile_random.yy",},},
|
{"id":{"name":"node_tile_random","path":"scripts/node_tile_random/node_tile_random.yy",},},
|
||||||
{"id":{"name":"node_tile","path":"scripts/node_tile/node_tile.yy",},},
|
{"id":{"name":"node_tile","path":"scripts/node_tile/node_tile.yy",},},
|
||||||
|
{"id":{"name":"node_tiler_export","path":"scripts/node_tiler_export/node_tiler_export.yy",},},
|
||||||
{"id":{"name":"node_tiler_tileset","path":"scripts/node_tiler_tileset/node_tiler_tileset.yy",},},
|
{"id":{"name":"node_tiler_tileset","path":"scripts/node_tiler_tileset/node_tiler_tileset.yy",},},
|
||||||
{"id":{"name":"node_tiler","path":"scripts/node_tiler/node_tiler.yy",},},
|
{"id":{"name":"node_tiler","path":"scripts/node_tiler/node_tiler.yy",},},
|
||||||
{"id":{"name":"node_time_remap","path":"scripts/node_time_remap/node_time_remap.yy",},},
|
{"id":{"name":"node_time_remap","path":"scripts/node_time_remap/node_time_remap.yy",},},
|
||||||
|
@ -2473,6 +2473,8 @@
|
||||||
{"id":{"name":"sh_texture_repeat","path":"shaders/sh_texture_repeat/sh_texture_repeat.yy",},},
|
{"id":{"name":"sh_texture_repeat","path":"shaders/sh_texture_repeat/sh_texture_repeat.yy",},},
|
||||||
{"id":{"name":"sh_threshold","path":"shaders/sh_threshold/sh_threshold.yy",},},
|
{"id":{"name":"sh_threshold","path":"shaders/sh_threshold/sh_threshold.yy",},},
|
||||||
{"id":{"name":"sh_tile_random","path":"shaders/sh_tile_random/sh_tile_random.yy",},},
|
{"id":{"name":"sh_tile_random","path":"shaders/sh_tile_random/sh_tile_random.yy",},},
|
||||||
|
{"id":{"name":"sh_tile_rule_apply","path":"shaders/sh_tile_rule_apply/sh_tile_rule_apply.yy",},},
|
||||||
|
{"id":{"name":"sh_tile_rule_select","path":"shaders/sh_tile_rule_select/sh_tile_rule_select.yy",},},
|
||||||
{"id":{"name":"sh_tiler_autoterrain_apply","path":"shaders/sh_tiler_autoterrain_apply/sh_tiler_autoterrain_apply.yy",},},
|
{"id":{"name":"sh_tiler_autoterrain_apply","path":"shaders/sh_tiler_autoterrain_apply/sh_tiler_autoterrain_apply.yy",},},
|
||||||
{"id":{"name":"sh_tiler_autoterrain_mask","path":"shaders/sh_tiler_autoterrain_mask/sh_tiler_autoterrain_mask.yy",},},
|
{"id":{"name":"sh_tiler_autoterrain_mask","path":"shaders/sh_tiler_autoterrain_mask/sh_tiler_autoterrain_mask.yy",},},
|
||||||
{"id":{"name":"sh_time_remap","path":"shaders/sh_time_remap/sh_time_remap.yy",},},
|
{"id":{"name":"sh_time_remap","path":"shaders/sh_time_remap/sh_time_remap.yy",},},
|
||||||
|
@ -2539,10 +2541,11 @@
|
||||||
{"id":{"name":"s_arrow_16","path":"sprites/s_arrow_16/s_arrow_16.yy",},},
|
{"id":{"name":"s_arrow_16","path":"sprites/s_arrow_16/s_arrow_16.yy",},},
|
||||||
{"id":{"name":"s_arrow_back_32","path":"sprites/s_arrow_back_32/s_arrow_back_32.yy",},},
|
{"id":{"name":"s_arrow_back_32","path":"sprites/s_arrow_back_32/s_arrow_back_32.yy",},},
|
||||||
{"id":{"name":"s_arrow_wire_16","path":"sprites/s_arrow_wire_16/s_arrow_wire_16.yy",},},
|
{"id":{"name":"s_arrow_wire_16","path":"sprites/s_arrow_wire_16/s_arrow_wire_16.yy",},},
|
||||||
{"id":{"name":"s_autotile_11x5","path":"sprites/s_autotile_11x5/s_autotile_11x5.yy",},},
|
{"id":{"name":"s_autoterrain_11x5","path":"sprites/s_autoterrain_11x5/s_autoterrain_11x5.yy",},},
|
||||||
{"id":{"name":"s_autotile_3x3","path":"sprites/s_autotile_3x3/s_autotile_3x3.yy",},},
|
{"id":{"name":"s_autoterrain_3x3","path":"sprites/s_autoterrain_3x3/s_autoterrain_3x3.yy",},},
|
||||||
{"id":{"name":"s_autotile_5x3","path":"sprites/s_autotile_5x3/s_autotile_5x3.yy",},},
|
{"id":{"name":"s_autoterrain_5x3","path":"sprites/s_autoterrain_5x3/s_autoterrain_5x3.yy",},},
|
||||||
{"id":{"name":"s_autotile_8x6","path":"sprites/s_autotile_8x6/s_autotile_8x6.yy",},},
|
{"id":{"name":"s_autoterrain_5x5","path":"sprites/s_autoterrain_5x5/s_autoterrain_5x5.yy",},},
|
||||||
|
{"id":{"name":"s_autoterrain_8x6","path":"sprites/s_autoterrain_8x6/s_autoterrain_8x6.yy",},},
|
||||||
{"id":{"name":"s_biterator_b_grey_long","path":"sprites/s_biterator_b_grey_long/s_biterator_b_grey_long.yy",},},
|
{"id":{"name":"s_biterator_b_grey_long","path":"sprites/s_biterator_b_grey_long/s_biterator_b_grey_long.yy",},},
|
||||||
{"id":{"name":"s_biterator_b_grey_short","path":"sprites/s_biterator_b_grey_short/s_biterator_b_grey_short.yy",},},
|
{"id":{"name":"s_biterator_b_grey_short","path":"sprites/s_biterator_b_grey_short/s_biterator_b_grey_short.yy",},},
|
||||||
{"id":{"name":"s_biterator_b_labels","path":"sprites/s_biterator_b_labels/s_biterator_b_labels.yy",},},
|
{"id":{"name":"s_biterator_b_labels","path":"sprites/s_biterator_b_labels/s_biterator_b_labels.yy",},},
|
||||||
|
@ -3328,6 +3331,7 @@
|
||||||
{"id":{"name":"s_node_threshold","path":"sprites/s_node_threshold/s_node_threshold.yy",},},
|
{"id":{"name":"s_node_threshold","path":"sprites/s_node_threshold/s_node_threshold.yy",},},
|
||||||
{"id":{"name":"s_node_tile_random","path":"sprites/s_node_tile_random/s_node_tile_random.yy",},},
|
{"id":{"name":"s_node_tile_random","path":"sprites/s_node_tile_random/s_node_tile_random.yy",},},
|
||||||
{"id":{"name":"s_node_tileset_drawer","path":"sprites/s_node_tileset_drawer/s_node_tileset_drawer.yy",},},
|
{"id":{"name":"s_node_tileset_drawer","path":"sprites/s_node_tileset_drawer/s_node_tileset_drawer.yy",},},
|
||||||
|
{"id":{"name":"s_node_tileset_export","path":"sprites/s_node_tileset_export/s_node_tileset_export.yy",},},
|
||||||
{"id":{"name":"s_node_tileset","path":"sprites/s_node_tileset/s_node_tileset.yy",},},
|
{"id":{"name":"s_node_tileset","path":"sprites/s_node_tileset/s_node_tileset.yy",},},
|
||||||
{"id":{"name":"s_node_time_map","path":"sprites/s_node_time_map/s_node_time_map.yy",},},
|
{"id":{"name":"s_node_time_map","path":"sprites/s_node_time_map/s_node_time_map.yy",},},
|
||||||
{"id":{"name":"s_node_timeline_preview","path":"sprites/s_node_timeline_preview/s_node_timeline_preview.yy",},},
|
{"id":{"name":"s_node_timeline_preview","path":"sprites/s_node_timeline_preview/s_node_timeline_preview.yy",},},
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
enum AUTOTERRAIN_TYPE {
|
enum AUTOTERRAIN_TYPE {
|
||||||
box9,
|
box9,
|
||||||
|
box25,
|
||||||
side15,
|
side15,
|
||||||
top48,
|
top48,
|
||||||
top55,
|
top55,
|
||||||
}
|
}
|
||||||
|
|
||||||
global.autoterrain_amount = [ 9, 15, 48, 55, ];
|
global.autoterrain_amount = [ 9, 16, 15, 48, 55, ];
|
||||||
|
|
||||||
function tiler_brush_autoterrain(_type, _index) constructor {
|
function tiler_brush_autoterrain(_type, _index) constructor {
|
||||||
name = "autoterrain";
|
name = "autoterrain";
|
||||||
|
@ -22,17 +23,20 @@ function tiler_brush_autoterrain(_type, _index) constructor {
|
||||||
|
|
||||||
open = false;
|
open = false;
|
||||||
|
|
||||||
sc_type = new scrollBox(["Simple box (3x3)", "Side platform (5x3)", "Godot tile (12x4)", "Gamemaker tileset (11x5)"], function(ind) /*=>*/ { setType(ind); });
|
sc_type = new scrollBox(["Simple box (3x3)", "Corner box (5x5)", "Side platform (5x3)", "Godot tile (12x4)", "Gamemaker tileset (11x5)"], function(ind) /*=>*/ { setType(ind); });
|
||||||
sc_type.font = f_p3;
|
sc_type.font = f_p3;
|
||||||
|
|
||||||
|
static indexMap48 = [ 8, 10, 11, 0, 1, 6, 5, 3, 2, 34, 12, 20, 33, 35, 12, 28, 30, 29, 31, 46, 21, 12, 44, 45, 47, 24, 16, 18, 17, 19, 9, 43, 40, 37, 38, 39, 36, 25, 42, 41, 27, 26, 7, 4, 13, 23, 32, 15, 14, 12 ];
|
||||||
|
|
||||||
static setType = function(_type) {
|
static setType = function(_type) {
|
||||||
type = _type;
|
type = _type;
|
||||||
|
|
||||||
switch(type) {
|
switch(type) {
|
||||||
case 0 : index = array_verify_ext(index, 9, function() /*=>*/ {return -1}); break;
|
case 0 : index = array_verify_ext(index, 9, function() /*=>*/ {return -1}); break;
|
||||||
case 1 : index = array_verify_ext(index, 15, function() /*=>*/ {return -1}); break;
|
case 1 : index = array_verify_ext(index, 25, function() /*=>*/ {return -1}); break;
|
||||||
case 2 : index = array_verify_ext(index, 48, function() /*=>*/ {return -1}); break;
|
case 2 : index = array_verify_ext(index, 15, function() /*=>*/ {return -1}); break;
|
||||||
case 3 : index = array_verify_ext(index, 55, function() /*=>*/ {return -1}); break;
|
case 3 : index = array_verify_ext(index, 48, function() /*=>*/ {return -1}); break;
|
||||||
|
case 4 : index = array_verify_ext(index, 55, function() /*=>*/ {return -1}); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
} setType(_type);
|
} setType(_type);
|
||||||
|
@ -79,6 +83,7 @@ function tiler_brush_autoterrain(_type, _index) constructor {
|
||||||
|
|
||||||
shader_set_surface("maskSurface", mask_surface);
|
shader_set_surface("maskSurface", mask_surface);
|
||||||
shader_set_i("bitmaskType", type);
|
shader_set_i("bitmaskType", type);
|
||||||
|
shader_set_i("indexMapper48", indexMap48);
|
||||||
|
|
||||||
shader_set_i("indexes", index);
|
shader_set_i("indexes", index);
|
||||||
shader_set_i("indexSize", array_length(index));
|
shader_set_i("indexSize", array_length(index));
|
||||||
|
|
|
@ -1,9 +1,99 @@
|
||||||
|
function tiler_rule_replacement(_index) constructor {
|
||||||
|
index = _index;
|
||||||
|
}
|
||||||
|
|
||||||
function tiler_rule() constructor {
|
function tiler_rule() constructor {
|
||||||
name = "rule";
|
name = "rule";
|
||||||
open = false;
|
open = false;
|
||||||
|
active = true;
|
||||||
|
|
||||||
|
range = 1;
|
||||||
|
size = [ 1, 1 ];
|
||||||
|
probability = 100;
|
||||||
|
_probability = 1;
|
||||||
|
|
||||||
|
selection_rules = array_create(9, -1);
|
||||||
|
selection_rules[4] = -10000;
|
||||||
|
replacements = [];
|
||||||
|
|
||||||
|
sl_prop = new textBox(TEXTBOX_INPUT.number, function(v) /*=>*/ { probability = v; })
|
||||||
|
.setSlideRange(0, 100);
|
||||||
|
sl_prop.suffix = "%";
|
||||||
|
sl_prop.font = f_p3;
|
||||||
|
|
||||||
|
__aut = [];
|
||||||
|
__sel = [];
|
||||||
|
|
||||||
|
static shader_select = function(tileset) {
|
||||||
|
shader_set_i("range", range);
|
||||||
|
|
||||||
|
selection_rules = array_verify_ext(selection_rules, (size[0] + range * 2) * (size[1] + range * 2), function() /*=>*/ {return -1} );
|
||||||
|
|
||||||
|
__aut = [];
|
||||||
|
__sel = [];
|
||||||
|
var autI = [];
|
||||||
|
|
||||||
|
for( var i = 0, n = array_length(selection_rules); i < n; i++ ) {
|
||||||
|
var _r = selection_rules[i];
|
||||||
|
|
||||||
|
if(is_array(_r)) {
|
||||||
|
var _auI = _r[1];
|
||||||
|
array_push(__sel, 10000 + _auI);
|
||||||
|
array_push_unique(autI, _auI);
|
||||||
|
} else
|
||||||
|
array_push(__sel, _r);
|
||||||
|
}
|
||||||
|
|
||||||
|
for( var i = 0, n = array_length(autI); i < n; i++ ) {
|
||||||
|
var _i = autI[i];
|
||||||
|
var _t = tileset.autoterrain[_i];
|
||||||
|
|
||||||
|
var _ind = 64 * i;
|
||||||
|
__aut[_ind] = array_length(_t.index);
|
||||||
|
for( var j = 0, m = array_length(_t.index); j < m; j++ )
|
||||||
|
__aut[_ind + 1 + j] = _t.index[j];
|
||||||
|
}
|
||||||
|
|
||||||
|
shader_set_f("selection", __sel);
|
||||||
|
shader_set_f("selectionGroup", __aut);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static shader_submit = function(tileset) {
|
||||||
|
shader_set_i("range", range);
|
||||||
|
shader_set_f("probability", probability / 100);
|
||||||
|
|
||||||
|
shader_set_f("size", size);
|
||||||
|
shader_set_f("selection", __sel);
|
||||||
|
shader_set_f("selectionGroup", __aut);
|
||||||
|
|
||||||
|
var rep = [];
|
||||||
|
var rsz = size[0] * size[1];
|
||||||
|
|
||||||
|
for( var i = 0, n = array_length(replacements); i < n; i++ ) {
|
||||||
|
var _r = replacements[i];
|
||||||
|
_r.index = array_verify_ext(_r.index, rsz, function() /*=>*/ {return -1} );
|
||||||
|
array_append(rep, _r.index);
|
||||||
|
}
|
||||||
|
|
||||||
|
shader_set_f("replacements", rep);
|
||||||
|
shader_set_i("replacementCount", array_length(replacements));
|
||||||
|
}
|
||||||
|
|
||||||
static deserialize = function(_struct) {
|
static deserialize = function(_struct) {
|
||||||
name = struct_try_get(_struct, "name", name);
|
name = struct_try_get(_struct, "name", name);
|
||||||
|
size = struct_try_get(_struct, "size", size);
|
||||||
|
range = struct_try_get(_struct, "range", range);
|
||||||
|
active = struct_try_get(_struct, "active", active);
|
||||||
|
|
||||||
|
selection_rules = struct_try_get(_struct, "selection_rules", selection_rules);
|
||||||
|
probability = struct_try_get(_struct, "probability", probability);
|
||||||
|
|
||||||
|
var _rep = struct_try_get(_struct, "replacements", noone);
|
||||||
|
if(_rep != noone) {
|
||||||
|
for( var i = 0, n = array_length(_rep); i < n; i++ )
|
||||||
|
replacements[i] = new tiler_rule_replacement(_rep[i].index);
|
||||||
|
}
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
function checkBox(_onClick) : widget() constructor {
|
function checkBox(_onClick) : widget() constructor {
|
||||||
onClick = _onClick;
|
onClick = _onClick;
|
||||||
spr = THEME.checkbox_def;
|
|
||||||
triggered = false;
|
triggered = false;
|
||||||
|
spr = THEME.checkbox_def;
|
||||||
|
|
||||||
static setLua = function(_lua_thread, _lua_key, _lua_func) {
|
static setLua = function(_lua_thread, _lua_key, _lua_func) {
|
||||||
lua_thread = _lua_thread;
|
lua_thread = _lua_thread;
|
||||||
|
|
|
@ -63,8 +63,8 @@ function draw_sprite_bbox_uniform(spr, ind, _bbox, _col = c_white, _alp = 1) {
|
||||||
__draw_sprite_stretched_ext(spr, ind, _bbox.xc - _minS / 2, _bbox.yc - _minS / 2, _minS, _minS, _col, _alp);
|
__draw_sprite_stretched_ext(spr, ind, _bbox.xc - _minS / 2, _bbox.yc - _minS / 2, _minS, _minS, _col, _alp);
|
||||||
}
|
}
|
||||||
|
|
||||||
function draw_sprite_uniform(spr, ind, _x, _y, scale, color = c_white) {
|
function draw_sprite_uniform(spr, ind, _x, _y, scale, color = c_white, alpha = 1) {
|
||||||
INLINE draw_sprite_ext(spr, ind, _x, _y, scale, scale, 0, color, 1);
|
INLINE draw_sprite_ext(spr, ind, _x, _y, scale, scale, 0, color, alpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
function draw_sprite_ui(spr, ind, _x, _y, xscale = 1, yscale = 1, rot = 0, color = c_white, alpha = 1) {
|
function draw_sprite_ui(spr, ind, _x, _y, xscale = 1, yscale = 1, rot = 0, color = c_white, alpha = 1) {
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
LATEST_VERSION = 1_18_00_0;
|
LATEST_VERSION = 1_18_00_0;
|
||||||
VERSION = 1_18_01_0;
|
VERSION = 1_18_01_0;
|
||||||
SAVE_VERSION = 1_18_02_0;
|
SAVE_VERSION = 1_18_02_0;
|
||||||
VERSION_STRING = MAC? "1.18.003m" : "1.18.3.005";
|
VERSION_STRING = MAC? "1.18.003m" : "1.18.3.006";
|
||||||
BUILD_NUMBER = 1_18_01_0;
|
BUILD_NUMBER = 1_18_01_0;
|
||||||
|
|
||||||
HOTKEYS = ds_map_create();
|
HOTKEYS = ds_map_create();
|
||||||
|
|
|
@ -770,14 +770,16 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
||||||
else if(_currTool != noone) {
|
else if(_currTool != noone) {
|
||||||
_tool = _currTool.getToolObject();
|
_tool = _currTool.getToolObject();
|
||||||
|
|
||||||
if(_tool) {
|
if(is(_tool, canvas_tool)) {
|
||||||
_tool.node = self;
|
_tool.node = self;
|
||||||
|
|
||||||
_tool = _tool.getTool();
|
_tool = _tool.getTool();
|
||||||
_tool.subtool = _currTool.selecting;
|
_tool.subtool = _currTool.selecting;
|
||||||
array_append(rightTools, _tool.rightTools);
|
array_append(rightTools, _tool.rightTools);
|
||||||
|
|
||||||
use_color_3d = _tool.use_color_3d;
|
use_color_3d = _tool.use_color_3d;
|
||||||
}
|
} else
|
||||||
|
_tool = noone;
|
||||||
}
|
}
|
||||||
|
|
||||||
tool_selection.drawing_surface = drawing_surface;
|
tool_selection.drawing_surface = drawing_surface;
|
||||||
|
|
|
@ -95,7 +95,7 @@ function Node_Line(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) cons
|
||||||
lines = [];
|
lines = [];
|
||||||
line_data = [];
|
line_data = [];
|
||||||
|
|
||||||
temp_surfaces = [ noone ];
|
temp_surface = [ noone ];
|
||||||
|
|
||||||
widthMap = ds_map_create();
|
widthMap = ds_map_create();
|
||||||
|
|
||||||
|
@ -541,8 +541,8 @@ function Node_Line(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) cons
|
||||||
var _padx = _pbbox * (_ppadd[2] - minx);
|
var _padx = _pbbox * (_ppadd[2] - minx);
|
||||||
var _pady = _pbbox * (_ppadd[1] - miny);
|
var _pady = _pbbox * (_ppadd[1] - miny);
|
||||||
|
|
||||||
temp_surfaces[0] = surface_verify(temp_surfaces[0], _surfDim[0] * _aa, _surfDim[1] * _aa, attrDepth());
|
temp_surface[0] = surface_verify(temp_surface[0], _surfDim[0] * _aa, _surfDim[1] * _aa, attrDepth());
|
||||||
var _cPassAA = temp_surfaces[0];
|
var _cPassAA = temp_surface[0];
|
||||||
|
|
||||||
surface_set_target(_cPassAA);
|
surface_set_target(_cPassAA);
|
||||||
if(_bg) draw_clear_alpha(0, 1);
|
if(_bg) draw_clear_alpha(0, 1);
|
||||||
|
|
|
@ -11,9 +11,13 @@ function Node_Normal(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
|
||||||
newInput(3, nodeValue_Bool("Active", self, true));
|
newInput(3, nodeValue_Bool("Active", self, true));
|
||||||
active_index = 3;
|
active_index = 3;
|
||||||
|
|
||||||
|
newInput(4, nodeValue_Bool("Normalize", self, true));
|
||||||
|
|
||||||
|
newInput(5, nodeValue_Bool("Flip X", self, true));
|
||||||
|
|
||||||
input_display_list = [ 3,
|
input_display_list = [ 3,
|
||||||
["Surfaces", false], 0,
|
["Surfaces", false], 0,
|
||||||
["Normal", false], 1, 2,
|
["Normal", false], 1, 2, 5, 4,
|
||||||
]
|
]
|
||||||
|
|
||||||
newOutput(0, nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone));
|
newOutput(0, nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone));
|
||||||
|
@ -23,6 +27,8 @@ function Node_Normal(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
|
||||||
static processData = function(_outSurf, _data, _output_index, _array_index) {
|
static processData = function(_outSurf, _data, _output_index, _array_index) {
|
||||||
var _hei = _data[1];
|
var _hei = _data[1];
|
||||||
var _smt = _data[2];
|
var _smt = _data[2];
|
||||||
|
var _nor = _data[4];
|
||||||
|
var _swx = _data[5];
|
||||||
|
|
||||||
surface_set_shader(_outSurf, sh_normal);
|
surface_set_shader(_outSurf, sh_normal);
|
||||||
gpu_set_texfilter(true);
|
gpu_set_texfilter(true);
|
||||||
|
@ -30,6 +36,8 @@ function Node_Normal(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
|
||||||
shader_set_f("dimension", surface_get_dimension(_data[0]), surface_get_height_safe(_data[0]));
|
shader_set_f("dimension", surface_get_dimension(_data[0]), surface_get_height_safe(_data[0]));
|
||||||
shader_set_f("height", _hei);
|
shader_set_f("height", _hei);
|
||||||
shader_set_f("smooth", _smt);
|
shader_set_f("smooth", _smt);
|
||||||
|
shader_set_i("normal", _nor);
|
||||||
|
shader_set_i("swapx", _swx);
|
||||||
|
|
||||||
draw_surface_safe(_data[0]);
|
draw_surface_safe(_data[0]);
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ function Node_Random_Shape(_x, _y, _group = noone) : Node_Processor(_x, _y, _gro
|
||||||
["Render", false], 2,
|
["Render", false], 2,
|
||||||
]
|
]
|
||||||
|
|
||||||
temp_surfaces = [ noone ];
|
temp_surface = [ noone ];
|
||||||
|
|
||||||
function surfaceContentRatio(_surf) {
|
function surfaceContentRatio(_surf) {
|
||||||
var s = 0;
|
var s = 0;
|
||||||
|
@ -139,8 +139,8 @@ function Node_Random_Shape(_x, _y, _group = noone) : Node_Processor(_x, _y, _gro
|
||||||
|
|
||||||
var _corn = surface_create(_dim[0], _dim[1]);
|
var _corn = surface_create(_dim[0], _dim[1]);
|
||||||
|
|
||||||
temp_surfaces[0] = surface_verify(temp_surfaces[0], _adim[0], _adim[1]);
|
temp_surface[0] = surface_verify(temp_surface[0], _adim[0], _adim[1]);
|
||||||
var _cPassAA = temp_surfaces[0];
|
var _cPassAA = temp_surface[0];
|
||||||
|
|
||||||
surface_set_shader(_cPassAA, sh_rsh_corner, true, BLEND.add);
|
surface_set_shader(_cPassAA, sh_rsh_corner, true, BLEND.add);
|
||||||
shader_set_f("dimension", _adim[0], _adim[1]);
|
shader_set_f("dimension", _adim[0], _adim[1]);
|
||||||
|
|
|
@ -528,8 +528,9 @@ function __initNodes() {
|
||||||
addNodeObject(input, "Canvas", s_node_canvas, "Node_Canvas", [1, Node_Canvas], ["draw"], "Draw on surface using brush, eraser, etc.");
|
addNodeObject(input, "Canvas", s_node_canvas, "Node_Canvas", [1, Node_Canvas], ["draw"], "Draw on surface using brush, eraser, etc.");
|
||||||
addNodeObject(input, "Canvas Group", s_node_canvas_group, "Node_Canvas_Group", [1, Node_Canvas_Group],, "Create a group that combines multiple canvas nodes a layers.").setVersion(11740);
|
addNodeObject(input, "Canvas Group", s_node_canvas_group, "Node_Canvas_Group", [1, Node_Canvas_Group],, "Create a group that combines multiple canvas nodes a layers.").setVersion(11740);
|
||||||
addNodeObject(input, "Active Canvas", s_node_active_canvas, "Node_Active_Canvas", [1, Node_Active_Canvas], ["draw"], "Draw using parameterized brush.").setVersion(11570);
|
addNodeObject(input, "Active Canvas", s_node_active_canvas, "Node_Active_Canvas", [1, Node_Active_Canvas], ["draw"], "Draw using parameterized brush.").setVersion(11570);
|
||||||
addNodeObject(input, "Tileset", s_node_tileset, "Node_Tile_Tileset", [1, Node_Tile_Tileset],, "Create tileset object.").setVersion(1_18_02_0);
|
addNodeObject(input, "Tileset", s_node_tileset, "Node_Tile_Tileset", [1, Node_Tile_Tileset],, "Create tileset object.").setVersion(1_18_03_0);
|
||||||
addNodeObject(input, "Tile Drawer", s_node_tileset_drawer, "Node_Tile_Drawer", [1, Node_Tile_Drawer],, "Draw using tileset.").setVersion(1_18_02_0);
|
addNodeObject(input, "Tile Drawer", s_node_tileset_drawer, "Node_Tile_Drawer", [1, Node_Tile_Drawer],, "Draw using tileset.").setVersion(1_18_03_0);
|
||||||
|
addNodeObject(input, "Export Tilemap", s_node_tileset_export, "Node_Tile_Tilemap_Export", [1, Node_Tile_Tilemap_Export],, "Export tilemap to file.").setVersion(1_18_03_0);
|
||||||
|
|
||||||
ds_list_add(input, "Files");
|
ds_list_add(input, "Files");
|
||||||
addNodeObject(input, "Text File In", s_node_text_file_read, "Node_Text_File_Read", [1, Node_Text_File_Read], ["txt"], "Load .txt in as text.").setVersion(1080);
|
addNodeObject(input, "Text File In", s_node_text_file_read, "Node_Text_File_Read", [1, Node_Text_File_Read], ["txt"], "Load .txt in as text.").setVersion(1080);
|
||||||
|
|
|
@ -595,6 +595,7 @@ function Node_Shape(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "Gear":
|
case "Gear":
|
||||||
|
inputs[ 9].setVisible(true);
|
||||||
inputs[13].setVisible(true);
|
inputs[13].setVisible(true);
|
||||||
inputs[25].setVisible(true);
|
inputs[25].setVisible(true);
|
||||||
inputs[26].setVisible(true);
|
inputs[26].setVisible(true);
|
||||||
|
|
|
@ -90,7 +90,7 @@ function Node_Shape_Polygon(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
|
||||||
|
|
||||||
node_draw_transform_init();
|
node_draw_transform_init();
|
||||||
|
|
||||||
temp_surfaces = [ noone ];
|
temp_surface = [ noone ];
|
||||||
|
|
||||||
static drawOverlay = function(hover, active, _x, _y, _s, _mx, _my, _snx, _sny) {
|
static drawOverlay = function(hover, active, _x, _y, _s, _mx, _my, _snx, _sny) {
|
||||||
if(array_length(current_data) != array_length(inputs)) return;
|
if(array_length(current_data) != array_length(inputs)) return;
|
||||||
|
@ -197,8 +197,8 @@ function Node_Shape_Polygon(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
|
||||||
|
|
||||||
var _outSurf = surface_verify(_outData[0], _dim[0], _dim[1], attrDepth());
|
var _outSurf = surface_verify(_outData[0], _dim[0], _dim[1], attrDepth());
|
||||||
|
|
||||||
temp_surfaces[0] = surface_verify(temp_surfaces[0], _dim[0] * _aa, _dim[1] * _aa, attrDepth());
|
temp_surface[0] = surface_verify(temp_surface[0], _dim[0] * _aa, _dim[1] * _aa, attrDepth());
|
||||||
var _cPassAA = temp_surfaces[0];
|
var _cPassAA = temp_surface[0];
|
||||||
|
|
||||||
var data = {
|
var data = {
|
||||||
side: _side,
|
side: _side,
|
||||||
|
|
|
@ -11,19 +11,21 @@ function Node_Tile_Drawer(_x, _y, _group = noone) : Node_Processor(_x, _y, _grou
|
||||||
|
|
||||||
newInput( 2, nodeValue_Bool("Animated", self, false));
|
newInput( 2, nodeValue_Bool("Animated", self, false));
|
||||||
|
|
||||||
input_display_list = [ 1, 0 ];
|
newInput( 3, nodeValueSeed(self, VALUE_TYPE.float));
|
||||||
|
|
||||||
|
input_display_list = [ 3, 1, 0 ];
|
||||||
input_display_list_tileset = ["Tileset", false, noone, noone];
|
input_display_list_tileset = ["Tileset", false, noone, noone];
|
||||||
input_display_list_autoterrains = ["Autoterrain", true, noone, noone];
|
input_display_list_autoterrains = ["Autoterrains", true, noone, noone];
|
||||||
input_display_list_palette = ["Palette", true, noone, noone];
|
input_display_list_palette = ["Palette", true, noone, noone];
|
||||||
input_display_list_animated = ["Animated", true, 2, noone];
|
input_display_list_animated = ["Animated tiles",true, 2, noone];
|
||||||
input_display_list_rule = ["Rule", true, noone, noone];
|
input_display_list_rule = ["Rules", true, noone, noone];
|
||||||
|
|
||||||
newOutput(0, nodeValue_Output("Tile output", self, VALUE_TYPE.surface, noone));
|
newOutput(0, nodeValue_Output("Tile output", self, VALUE_TYPE.surface, noone));
|
||||||
|
|
||||||
newOutput(1, nodeValue_Output("Tile map", self, VALUE_TYPE.surface, noone));
|
newOutput(1, nodeValue_Output("Tile map", self, VALUE_TYPE.surface, noone));
|
||||||
|
|
||||||
newOutput(2, nodeValue_Output("Index array", self, VALUE_TYPE.integer, []))
|
// newOutput(2, nodeValue_Output("Index array", self, VALUE_TYPE.integer, []))
|
||||||
.setArrayDepth(1);
|
// .setArrayDepth(1);
|
||||||
|
|
||||||
output_display_list = [ 0, 1 ];
|
output_display_list = [ 0, 1 ];
|
||||||
|
|
||||||
|
@ -41,9 +43,7 @@ function Node_Tile_Drawer(_x, _y, _group = noone) : Node_Processor(_x, _y, _grou
|
||||||
_preview_draw_mask = surface_create_empty(1, 1);
|
_preview_draw_mask = surface_create_empty(1, 1);
|
||||||
preview_draw_mask = surface_create_empty(1, 1);
|
preview_draw_mask = surface_create_empty(1, 1);
|
||||||
|
|
||||||
attributes.dimension = [ 1, 1 ];
|
temp_surface = [ 0, 0, 0 ];
|
||||||
temp_surface = [ 0 ];
|
|
||||||
|
|
||||||
selection_mask = noone;
|
selection_mask = noone;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -143,18 +143,17 @@ function Node_Tile_Drawer(_x, _y, _group = noone) : Node_Processor(_x, _y, _grou
|
||||||
}
|
}
|
||||||
|
|
||||||
#region surfaces
|
#region surfaces
|
||||||
var _dim = attributes.dimension;
|
var _outDim = [ _tileSiz[0] * _mapSize[0], _tileSiz[1] * _mapSize[1] ];
|
||||||
var _outDim = [ _tileSiz[0] * _dim[0], _tileSiz[1] * _dim[1] ];
|
|
||||||
|
|
||||||
preview_draw_overlay = surface_verify(preview_draw_overlay, _dim[0], _dim[1], surface_rgba16float);
|
preview_draw_overlay = surface_verify(preview_draw_overlay, _mapSize[0], _mapSize[1], surface_rgba16float);
|
||||||
preview_drawing_tile = surface_verify(preview_drawing_tile, _dim[0] * _tileSiz[0], _dim[1] * _tileSiz[1]);
|
preview_drawing_tile = surface_verify(preview_drawing_tile, _mapSize[0] * _tileSiz[0], _mapSize[1] * _tileSiz[1]);
|
||||||
preview_draw_overlay_tile = surface_verify(preview_draw_overlay_tile, _dim[0] * _tileSiz[0], _dim[1] * _tileSiz[1]);
|
preview_draw_overlay_tile = surface_verify(preview_draw_overlay_tile, _mapSize[0] * _tileSiz[0], _mapSize[1] * _tileSiz[1]);
|
||||||
|
|
||||||
var __s = surface_get_target();
|
var __s = surface_get_target();
|
||||||
var _sw = surface_get_width(__s);
|
var _sw = surface_get_width(__s);
|
||||||
var _sh = surface_get_height(__s);
|
var _sh = surface_get_height(__s);
|
||||||
|
|
||||||
_preview_draw_mask = surface_verify(_preview_draw_mask, _dim[0], _dim[1]);
|
_preview_draw_mask = surface_verify(_preview_draw_mask, _mapSize[0], _mapSize[1]);
|
||||||
preview_draw_mask = surface_verify( preview_draw_mask, _sw, _sh);
|
preview_draw_mask = surface_verify( preview_draw_mask, _sw, _sh);
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -163,12 +162,15 @@ function Node_Tile_Drawer(_x, _y, _group = noone) : Node_Processor(_x, _y, _grou
|
||||||
var _currTool = PANEL_PREVIEW.tool_current;
|
var _currTool = PANEL_PREVIEW.tool_current;
|
||||||
var _tool = _currTool == noone? noone : _currTool.getToolObject();
|
var _tool = _currTool == noone? noone : _currTool.getToolObject();
|
||||||
|
|
||||||
|
if(!is(_tool, tiler_tool))
|
||||||
|
_tool = noone;
|
||||||
|
|
||||||
if(_tool) {
|
if(_tool) {
|
||||||
var brush = tileset.brush;
|
var brush = tileset.brush;
|
||||||
|
|
||||||
brush.node = self;
|
brush.node = self;
|
||||||
brush.brush_size = tool_attribute.size;
|
brush.brush_size = tool_attribute.size;
|
||||||
brush.autoterrain = array_safe_get(tileset.autoterrains, tileset.autoterrain_selecting, noone);
|
brush.autoterrain = is(tileset.object_selecting, tiler_brush_autoterrain)? tileset.object_selecting : noone;
|
||||||
|
|
||||||
_tool.brush = brush;
|
_tool.brush = brush;
|
||||||
_tool.subtool = _currTool.selecting;
|
_tool.subtool = _currTool.selecting;
|
||||||
|
@ -206,18 +208,18 @@ function Node_Tile_Drawer(_x, _y, _group = noone) : Node_Processor(_x, _y, _grou
|
||||||
|
|
||||||
#region draw preview surfaces
|
#region draw preview surfaces
|
||||||
|
|
||||||
surface_set_shader(preview_drawing_tile, sh_draw_tile_map, true, BLEND.over);
|
// surface_set_shader(preview_drawing_tile, sh_draw_tile_map, true, BLEND.over);
|
||||||
shader_set_2("dimension", _outDim);
|
// shader_set_2("dimension", _outDim);
|
||||||
|
|
||||||
shader_set_surface("indexTexture", drawing_surface);
|
// shader_set_surface("indexTexture", drawing_surface);
|
||||||
shader_set_2("indexTextureDim", surface_get_dimension(drawing_surface));
|
// shader_set_2("indexTextureDim", surface_get_dimension(drawing_surface));
|
||||||
|
|
||||||
tileset.shader_submit();
|
// tileset.shader_submit();
|
||||||
|
|
||||||
draw_empty();
|
// draw_empty();
|
||||||
surface_reset_shader();
|
// surface_reset_shader();
|
||||||
|
|
||||||
draw_surface_ext(preview_drawing_tile, _x, _y, _s, _s, 0, c_white, 1);
|
// draw_surface_ext(preview_drawing_tile, _x, _y, _s, _s, 0, c_white, 1);
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
@ -245,9 +247,9 @@ function Node_Tile_Drawer(_x, _y, _group = noone) : Node_Processor(_x, _y, _grou
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
//if(!array_empty(autoterrains)) draw_surface_ext(autoterrains[0].mask_surface, 32, 32, 8, 8, 0, c_white, 1);
|
// if(!array_empty(autoterrains)) draw_surface_ext(autoterrains[0].mask_surface, 32, 32, 8, 8, 0, c_white, 1);
|
||||||
// draw_surface_ext(canvas_surface, 32, 32, 8, 8, 0, c_white, 1);
|
// if(surface_exists(canvas_surface)) draw_surface_ext(canvas_surface, 32, 32, 8, 8, 0, c_white, 1);
|
||||||
// draw_surface_ext(drawing_surface, 232, 32, 8, 8, 0, c_white, 1);
|
// if(surface_exists(drawing_surface)) draw_surface_ext(drawing_surface, 232, 32, 8, 8, 0, c_white, 1);
|
||||||
// draw_surface_ext(preview_draw_overlay, 432, 32, 8, 8, 0, c_white, 1);
|
// draw_surface_ext(preview_draw_overlay, 432, 32, 8, 8, 0, c_white, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -255,7 +257,7 @@ function Node_Tile_Drawer(_x, _y, _group = noone) : Node_Processor(_x, _y, _grou
|
||||||
tileset = _data[0];
|
tileset = _data[0];
|
||||||
|
|
||||||
if(tileset == noone) {
|
if(tileset == noone) {
|
||||||
input_display_list = [ 1, 0 ];
|
input_display_list = [ 3, 1, 0 ];
|
||||||
return _outData;
|
return _outData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -265,7 +267,7 @@ function Node_Tile_Drawer(_x, _y, _group = noone) : Node_Processor(_x, _y, _grou
|
||||||
input_display_list_animated[3] = tileset.animated_viewer_toggler;
|
input_display_list_animated[3] = tileset.animated_viewer_toggler;
|
||||||
input_display_list_rule[3] = tileset.rules_viewer_toggler;
|
input_display_list_rule[3] = tileset.rules_viewer_toggler;
|
||||||
|
|
||||||
input_display_list = [ 1, 0,
|
input_display_list = [ 3, 1, 0,
|
||||||
input_display_list_tileset, tileset.tile_selector,
|
input_display_list_tileset, tileset.tile_selector,
|
||||||
input_display_list_autoterrains, tileset.autoterrain_selector,
|
input_display_list_autoterrains, tileset.autoterrain_selector,
|
||||||
input_display_list_palette, tileset.palette_viewer,
|
input_display_list_palette, tileset.palette_viewer,
|
||||||
|
@ -277,17 +279,18 @@ function Node_Tile_Drawer(_x, _y, _group = noone) : Node_Processor(_x, _y, _grou
|
||||||
var _tileSiz = tileset.tileSize;
|
var _tileSiz = tileset.tileSize;
|
||||||
var _mapSize = _data[1];
|
var _mapSize = _data[1];
|
||||||
var _animated = _data[2];
|
var _animated = _data[2];
|
||||||
|
var _seed = _data[3];
|
||||||
update_on_frame = _animated;
|
update_on_frame = _animated;
|
||||||
|
|
||||||
attributes.dimension[0] = _mapSize[0];
|
|
||||||
attributes.dimension[1] = _mapSize[1];
|
|
||||||
|
|
||||||
if(!is_surface(canvas_surface) && buffer_exists(canvas_buffer)) {
|
if(!is_surface(canvas_surface) && buffer_exists(canvas_buffer)) {
|
||||||
canvas_surface = surface_create(_mapSize[0], _mapSize[1], surface_rgba16float);
|
canvas_surface = surface_create(_mapSize[0], _mapSize[1], surface_rgba16float);
|
||||||
buffer_set_surface(canvas_buffer, canvas_surface, 0);
|
buffer_set_surface(canvas_buffer, canvas_surface, 0);
|
||||||
} else
|
} else
|
||||||
canvas_surface = surface_verify(canvas_surface, _mapSize[0], _mapSize[1], surface_rgba16float);
|
canvas_surface = surface_verify(canvas_surface, _mapSize[0], _mapSize[1], surface_rgba16float);
|
||||||
drawing_surface = surface_verify(drawing_surface, _mapSize[0], _mapSize[1], surface_rgba16float);
|
drawing_surface = surface_verify(drawing_surface, _mapSize[0], _mapSize[1], surface_rgba16float);
|
||||||
|
temp_surface[0] = surface_verify(temp_surface[0], _mapSize[0], _mapSize[1], surface_rgba16float);
|
||||||
|
temp_surface[1] = surface_verify(temp_surface[1], _mapSize[0], _mapSize[1], surface_rgba16float);
|
||||||
|
temp_surface[2] = surface_verify(temp_surface[2], _mapSize[0], _mapSize[1], surface_r16float);
|
||||||
|
|
||||||
surface_set_shader(drawing_surface, noone, true, BLEND.over);
|
surface_set_shader(drawing_surface, noone, true, BLEND.over);
|
||||||
draw_surface(canvas_surface, 0, 0);
|
draw_surface(canvas_surface, 0, 0);
|
||||||
|
@ -299,15 +302,49 @@ function Node_Tile_Drawer(_x, _y, _group = noone) : Node_Processor(_x, _y, _grou
|
||||||
|
|
||||||
var _tileOut = surface_verify(_outData[0], _outDim[0], _outDim[1]);
|
var _tileOut = surface_verify(_outData[0], _outDim[0], _outDim[1]);
|
||||||
var _tileMap = surface_verify(_outData[1], _mapSize[0], _mapSize[1], surface_rgba16float);
|
var _tileMap = surface_verify(_outData[1], _mapSize[0], _mapSize[1], surface_rgba16float);
|
||||||
var _arrIndx = array_verify( _outData[2], _mapSize[0] * _mapSize[1]);
|
// var _arrIndx = array_verify( _outData[2], _mapSize[0] * _mapSize[1]);
|
||||||
|
|
||||||
canvas_buffer = buffer_verify(canvas_buffer, _mapSize[0] * _mapSize[1] * 8);
|
canvas_buffer = buffer_verify(canvas_buffer, _mapSize[0] * _mapSize[1] * 8);
|
||||||
buffer_get_surface(canvas_buffer, canvas_surface, 0);
|
buffer_get_surface(canvas_buffer, canvas_surface, 0);
|
||||||
|
|
||||||
surface_set_shader(_tileMap, sh_sample, true, BLEND.over);
|
#region rules
|
||||||
|
surface_set_shader(temp_surface[1], sh_sample, true, BLEND.over);
|
||||||
draw_surface(canvas_surface, 0, 0);
|
draw_surface(canvas_surface, 0, 0);
|
||||||
surface_reset_shader();
|
surface_reset_shader();
|
||||||
|
|
||||||
|
var bg = 0;
|
||||||
|
|
||||||
|
for( var i = 0, n = array_length(tileset.ruleTiles); i < n; i++ ) {
|
||||||
|
var _rule = tileset.ruleTiles[i];
|
||||||
|
|
||||||
|
if(!_rule.active) continue;
|
||||||
|
if(array_empty(_rule.replacements)) continue;
|
||||||
|
|
||||||
|
surface_set_shader(temp_surface[2], sh_tile_rule_select, true, BLEND.over);
|
||||||
|
shader_set_2("dimension", _mapSize);
|
||||||
|
_rule.shader_select(tileset);
|
||||||
|
|
||||||
|
draw_surface(canvas_surface, 0, 0);
|
||||||
|
surface_reset_shader();
|
||||||
|
|
||||||
|
surface_set_shader(temp_surface[bg], sh_tile_rule_apply, true, BLEND.over);
|
||||||
|
shader_set_2("dimension", _mapSize);
|
||||||
|
shader_set_f("seed", _seed);
|
||||||
|
shader_set_surface("group", temp_surface[2]);
|
||||||
|
_rule.shader_submit(tileset);
|
||||||
|
|
||||||
|
draw_surface(temp_surface[!bg], 0, 0);
|
||||||
|
surface_reset_shader();
|
||||||
|
|
||||||
|
bg = !bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
surface_set_shader(_tileMap, sh_sample, true, BLEND.over);
|
||||||
|
draw_surface(temp_surface[!bg], 0, 0);
|
||||||
|
surface_reset_shader();
|
||||||
|
|
||||||
var _tileSetDim = surface_get_dimension(_tileSet);
|
var _tileSetDim = surface_get_dimension(_tileSet);
|
||||||
|
|
||||||
surface_set_shader(_tileOut, sh_draw_tile_map, true, BLEND.over);
|
surface_set_shader(_tileOut, sh_draw_tile_map, true, BLEND.over);
|
||||||
|
@ -322,11 +359,15 @@ function Node_Tile_Drawer(_x, _y, _group = noone) : Node_Processor(_x, _y, _grou
|
||||||
draw_empty();
|
draw_empty();
|
||||||
surface_reset_shader();
|
surface_reset_shader();
|
||||||
|
|
||||||
return [ _tileOut, _tileMap, _arrIndx ];
|
return [ _tileOut, _tileMap ];
|
||||||
}
|
}
|
||||||
|
|
||||||
static getPreviewValues = function() { return preview_drawing_tile; }
|
// static getPreviewValues = function() {
|
||||||
static getGraphPreviewSurface = function() { return getSingleValue(0, preview_index, true); }
|
// return getSingleValue(0, preview_index, true);
|
||||||
|
// return preview_drawing_tile;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// static getGraphPreviewSurface = function() { return getSingleValue(0, preview_index, true); }
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
83
scripts/node_tiler_export/node_tiler_export.gml
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
function Node_Tile_Tilemap_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||||
|
name = "Export Tilemap";
|
||||||
|
|
||||||
|
newInput( 0, nodeValue_Surface("Tilemap", self, noone));
|
||||||
|
|
||||||
|
newInput( 1, nodeValue_Path("Path", self, ""))
|
||||||
|
.setDisplay(VALUE_DISPLAY.path_save, { filter: "" })
|
||||||
|
.setVisible(true);
|
||||||
|
|
||||||
|
export_format = [ "CSV", "JSON" ];
|
||||||
|
newInput( 2, nodeValue_Enum_Scroll("Format", self, 0, export_format));
|
||||||
|
|
||||||
|
insp1UpdateTooltip = "Export";
|
||||||
|
insp1UpdateIcon = [ THEME.sequence_control, 1, COLORS._main_value_positive ];
|
||||||
|
|
||||||
|
static onInspector1Update = function(_fromValue = false) {
|
||||||
|
export();
|
||||||
|
}
|
||||||
|
|
||||||
|
static export = function() {
|
||||||
|
var tilemap = inputs[0].getValue();
|
||||||
|
var path = inputs[1].getValue();
|
||||||
|
var format = inputs[2].getValue();
|
||||||
|
|
||||||
|
if(!is_surface(tilemap)) return;
|
||||||
|
|
||||||
|
var _form = surface_get_format(tilemap);
|
||||||
|
if(_form != surface_rgba16float) {
|
||||||
|
noti_warning("Invalid tilemap type (RGBA16float only)")
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var _dim = surface_get_dimension(tilemap);
|
||||||
|
var _buff = buffer_from_surface(tilemap, false); buffer_to_start(_buff);
|
||||||
|
var _data = array_create(_dim[1]);
|
||||||
|
|
||||||
|
for( var i = 0; i < _dim[1]; i++ ) {
|
||||||
|
_data[i] = array_create(_dim[0]);
|
||||||
|
for( var j = 0; j < _dim[0]; j++ ) {
|
||||||
|
var _a = array_create(4);
|
||||||
|
|
||||||
|
_a[0] = buffer_read(_buff, buffer_f16);
|
||||||
|
_a[1] = buffer_read(_buff, buffer_f16);
|
||||||
|
_a[2] = buffer_read(_buff, buffer_f16);
|
||||||
|
_a[3] = buffer_read(_buff, buffer_f16);
|
||||||
|
|
||||||
|
_data[i][j] = _a[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
buffer_delete(_buff);
|
||||||
|
|
||||||
|
switch(export_format[format]) {
|
||||||
|
case "CSV" :
|
||||||
|
path = filename_change_ext(path, ".csv");
|
||||||
|
if(file_exists_empty(path)) file_delete(path);
|
||||||
|
|
||||||
|
var f = file_text_open_write(path);
|
||||||
|
if(f) {
|
||||||
|
for( var i = 0; i < _dim[1]; i++ ) {
|
||||||
|
var _txt = string_join_ext(",", _data[i]);
|
||||||
|
file_text_write_string(f, _txt);
|
||||||
|
file_text_writeln(f);
|
||||||
|
}
|
||||||
|
|
||||||
|
file_text_close(f);
|
||||||
|
|
||||||
|
var _txt = $"Export tilemap complete.";
|
||||||
|
logNode(_txt);
|
||||||
|
|
||||||
|
var noti = log_message("EXPORT", _txt, THEME.noti_icon_tick, COLORS._main_value_positive, false);
|
||||||
|
noti.path = filename_dir(path);
|
||||||
|
noti.setOnClick(function() /*=>*/ { shellOpenExplorer(self.path); }, "Open in explorer", THEME.explorer);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
13
scripts/node_tiler_export/node_tiler_export.yy
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
"$GMScript":"v1",
|
||||||
|
"%Name":"node_tiler_export",
|
||||||
|
"isCompatibility":false,
|
||||||
|
"isDnD":false,
|
||||||
|
"name":"node_tiler_export",
|
||||||
|
"parent":{
|
||||||
|
"name":"tiler",
|
||||||
|
"path":"folders/nodes/data/tiler.yy",
|
||||||
|
},
|
||||||
|
"resourceType":"GMScript",
|
||||||
|
"resourceVersion":"2.0",
|
||||||
|
}
|
|
@ -19,6 +19,29 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
|
|
||||||
newOutput(0, nodeValue_Output("Tileset", self, VALUE_TYPE.tileset, self));
|
newOutput(0, nodeValue_Output("Tileset", self, VALUE_TYPE.tileset, self));
|
||||||
|
|
||||||
|
static drawTile = function(_tileSet, _tileAmo, _tileSiz, index, _x, _y, _w, _h) {
|
||||||
|
if(index < -1) { // animated
|
||||||
|
var _an = -index - 2;
|
||||||
|
var _at = array_safe_get(animatedTiles, _an, noone);
|
||||||
|
if(_at == noone) return;
|
||||||
|
|
||||||
|
var _prin = array_safe_get(_at.index, safe_mod(current_time / 1000 * 2, array_length(_at.index)), undefined);
|
||||||
|
if(_prin != undefined) drawTile(_tileSet, _tileAmo, _tileSiz, _prin, _x, _y, _w, _h);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var _prc = safe_mod(index, _tileAmo[0]);
|
||||||
|
var _prr = floor(index / _tileAmo[0]);
|
||||||
|
|
||||||
|
var _pr_tx = _prc * _tileSiz[0];
|
||||||
|
var _pr_ty = _prr * _tileSiz[1];
|
||||||
|
|
||||||
|
var _pr_sx = _w / _tileSiz[0];
|
||||||
|
var _pr_sy = _h / _tileSiz[1];
|
||||||
|
|
||||||
|
draw_surface_part_ext(_tileSet, _pr_tx, _pr_ty, _tileSiz[0], _tileSiz[1], _x, _y, _pr_sx, _pr_sy, c_white, 1);
|
||||||
|
}
|
||||||
|
|
||||||
#region ++++ tile selector ++++
|
#region ++++ tile selector ++++
|
||||||
tile_selector_surface = 0;
|
tile_selector_surface = 0;
|
||||||
tile_selector_mask = 0;
|
tile_selector_mask = 0;
|
||||||
|
@ -38,6 +61,9 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
tile_selecting = false;
|
tile_selecting = false;
|
||||||
tile_select_ss = [ 0, 0 ];
|
tile_select_ss = [ 0, 0 ];
|
||||||
|
|
||||||
|
object_selecting = noone;
|
||||||
|
object_select_id = noone;
|
||||||
|
|
||||||
selecting_surface = noone;
|
selecting_surface = noone;
|
||||||
selecting_surface_tile = noone;
|
selecting_surface_tile = noone;
|
||||||
|
|
||||||
|
@ -157,19 +183,34 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
draw_set_color(c_black);
|
draw_set_color(c_black);
|
||||||
draw_rectangle_width(_tileHov_x, _tileHov_y, _tileHov_x + _tileSel_w - 1, _tileHov_y + _tileSel_h - 1, 1);
|
draw_rectangle_width(_tileHov_x, _tileHov_y, _tileHov_x + _tileSel_w - 1, _tileHov_y + _tileSel_h - 1, 1);
|
||||||
|
|
||||||
if(mouse_press(mb_left, _focus)) {
|
if(is(object_selecting, tiler_brush_autoterrain)) TOOLTIP = "Set Autoterrain";
|
||||||
if(autoterrain_subtile_selecting == noone) {
|
else if(is(object_selecting, tiler_brush_animated)) TOOLTIP = "Set Animated tile";
|
||||||
autoterrain_selecting = noone;
|
else if(is(object_selecting, tiler_rule)) TOOLTIP = "Set Rule selector";
|
||||||
animated_selecting = noone;
|
else if(is(object_selecting, tiler_rule_replacement)) TOOLTIP = "Set Rule replacement";
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, _focus)) {
|
||||||
|
if(object_selecting == noone) {
|
||||||
|
tile_selecting = true;
|
||||||
|
tile_select_ss = [ _mtx, _mty ];
|
||||||
|
|
||||||
|
} else if(is(object_selecting, tiler_brush_autoterrain) || is(object_selecting, tiler_brush_animated)) {
|
||||||
|
if(object_select_id != noone) {
|
||||||
|
object_selecting.index[object_select_id] = _mid;
|
||||||
|
object_select_id++;
|
||||||
|
if(object_select_id >= array_length(object_selecting.index))
|
||||||
|
object_select_id = noone;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if(is(object_selecting, tiler_rule)) {
|
||||||
|
if(object_select_id != noone)
|
||||||
|
object_selecting.selection_rules[object_select_id] = _mid;
|
||||||
|
object_selecting = noone;
|
||||||
|
triggerRender();
|
||||||
|
|
||||||
|
} else if(is(object_selecting, tiler_rule_replacement)) {
|
||||||
tile_selecting = true;
|
tile_selecting = true;
|
||||||
tile_select_ss = [ _mtx, _mty ];
|
tile_select_ss = [ _mtx, _mty ];
|
||||||
|
|
||||||
} else {
|
|
||||||
autoterrain[autoterrain_selecting].index[autoterrain_subtile_selecting] = _mid;
|
|
||||||
autoterrain_subtile_selecting++;
|
|
||||||
if(autoterrain_subtile_selecting >= array_length(autoterrain[autoterrain_selecting].index))
|
|
||||||
autoterrain_subtile_selecting = noone;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
palette_using = false;
|
palette_using = false;
|
||||||
|
@ -207,15 +248,29 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
brush.brush_indices = [];
|
brush.brush_indices = [];
|
||||||
brush.brush_width = _ts_ex - _ts_sx + 1;
|
brush.brush_width = _ts_ex - _ts_sx + 1;
|
||||||
brush.brush_height = _ts_ey - _ts_sy + 1;
|
brush.brush_height = _ts_ey - _ts_sy + 1;
|
||||||
var _ind = 0;
|
|
||||||
|
|
||||||
for( var i = _ts_sy; i <= _ts_ey; i++ )
|
for( var i = _ts_sy; i <= _ts_ey; i++ )
|
||||||
for( var j = _ts_sx; j <= _ts_ex; j++ )
|
for( var j = _ts_sx; j <= _ts_ex; j++ )
|
||||||
brush.brush_indices[i - _ts_sy][j - _ts_sx] = [ i * _tileAmo[0] + j, 0 ];
|
brush.brush_indices[i - _ts_sy][j - _ts_sx] = [ i * _tileAmo[0] + j, 0 ];
|
||||||
|
|
||||||
if(mouse_release(mb_left))
|
if(mouse_release(mb_left)) {
|
||||||
|
if(is(object_selecting, tiler_rule_replacement)) {
|
||||||
|
object_select_id.size[0] = max(object_select_id.size[0], brush.brush_width);
|
||||||
|
object_select_id.size[1] = max(object_select_id.size[1], brush.brush_height);
|
||||||
|
|
||||||
|
var _ind = 0;
|
||||||
|
for( var i = _ts_sy; i <= _ts_ey; i++ )
|
||||||
|
for( var j = _ts_sx; j <= _ts_ex; j++ )
|
||||||
|
object_selecting.index[_ind++] = i * _tileAmo[0] + j;
|
||||||
|
object_selecting = noone;
|
||||||
|
object_select_id = noone;
|
||||||
|
triggerRender();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
tile_selecting = false;
|
tile_selecting = false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#region pan zoom
|
#region pan zoom
|
||||||
if(tile_dragging) {
|
if(tile_dragging) {
|
||||||
|
@ -277,15 +332,13 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
draw_surface_ext(tile_selector_mask, _sx, _sy, 1, 1, 0, _cc, 1);
|
draw_surface_ext(tile_selector_mask, _sx, _sy, 1, 1, 0, _cc, 1);
|
||||||
shader_reset();
|
shader_reset();
|
||||||
|
|
||||||
if(autoterrain_selecting != noone) { // autoterrain
|
if(is(object_selecting, tiler_brush_autoterrain)) { // autoterrain
|
||||||
var _att = autoterrain[autoterrain_selecting];
|
|
||||||
|
|
||||||
surface_set_target(autoterrain_selector_mask);
|
surface_set_target(autoterrain_selector_mask);
|
||||||
DRAW_CLEAR
|
DRAW_CLEAR
|
||||||
|
|
||||||
draw_set_color(c_white);
|
draw_set_color(c_white);
|
||||||
for( var j = 0, m = array_length(_att.index); j < m; j++ ) {
|
for( var j = 0, m = array_length(object_selecting.index); j < m; j++ ) {
|
||||||
var _bindex = _att.index[j];
|
var _bindex = object_selecting.index[j];
|
||||||
var _tileSel_row = floor(_bindex / _tileAmo[0]);
|
var _tileSel_row = floor(_bindex / _tileAmo[0]);
|
||||||
var _tileSel_col = safe_mod(_bindex, _tileAmo[0]);
|
var _tileSel_col = safe_mod(_bindex, _tileAmo[0]);
|
||||||
var _tileSel_x = tile_selector_x + _tileSel_col * _tileSiz[0] * tile_selector_s;
|
var _tileSel_x = tile_selector_x + _tileSel_col * _tileSiz[0] * tile_selector_s;
|
||||||
|
@ -313,13 +366,40 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
var _th = ui(48);
|
var _th = ui(48);
|
||||||
_h += ui(8) + _th;
|
_h += ui(8) + _th;
|
||||||
|
|
||||||
|
var _sx = _x + ui(8);
|
||||||
|
var _sy = _ty + ui(8);
|
||||||
|
|
||||||
|
var _ss = (_th - ui(16)) / _sel_sh;
|
||||||
|
var _sw = _ss * _sel_sw;
|
||||||
|
var _sh = _ss * _sel_sh;
|
||||||
|
|
||||||
draw_sprite_stretched_ext(THEME.ui_panel_bg, 1, _x, _ty, _w, _th, COLORS.node_composite_bg_blend, 1);
|
draw_sprite_stretched_ext(THEME.ui_panel_bg, 1, _x, _ty, _w, _th, COLORS.node_composite_bg_blend, 1);
|
||||||
|
|
||||||
|
var _shov = _hover && point_in_rectangle(_m[0], _m[1], _sx, _sy, _sx + _sw, _sy + _sh);
|
||||||
|
var _aa = 0.5 + 0.5 * _shov;
|
||||||
|
draw_sprite_stretched_ext(THEME.ui_panel, 1, _sx, _sy, _sw, _sh, COLORS._main_icon, _aa);
|
||||||
|
draw_sprite_uniform(THEME.cross, 0, _sx + _sw / 2, _sy + _sh / 2, 1, COLORS._main_icon, _aa);
|
||||||
|
|
||||||
|
if(_shov) {
|
||||||
|
if(is(object_selecting, tiler_rule)) {
|
||||||
|
TOOLTIP = "Set Rule selector";
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, _focus)) {
|
||||||
|
if(object_select_id != noone)
|
||||||
|
object_selecting.selection_rules[object_select_id] = -10000;
|
||||||
|
object_selecting = noone;
|
||||||
|
triggerRender();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_sx += _sw + ui(8);
|
||||||
|
|
||||||
if(brush.brush_width * brush.brush_height != 1)
|
if(brush.brush_width * brush.brush_height != 1)
|
||||||
return _h;
|
return _h;
|
||||||
|
|
||||||
var _bb = brush.brush_indices[0][0];
|
var _bb = brush.brush_indices[0][0];
|
||||||
var _sx = _x + ui(8);
|
|
||||||
var _variences = [ 0, 1, 2, 3, 8, 16 ];
|
var _variences = [ 0, 1, 2, 3, 8, 16 ];
|
||||||
|
|
||||||
for( var v = 0, p = array_length(_variences); v < p; v++ ) {
|
for( var v = 0, p = array_length(_variences); v < p; v++ ) {
|
||||||
|
@ -344,20 +424,13 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
draw_empty();
|
draw_empty();
|
||||||
surface_reset_shader();
|
surface_reset_shader();
|
||||||
|
|
||||||
var _sy = _ty + ui(8);
|
|
||||||
var _ss = (_th - ui(16)) / _sel_sh;
|
|
||||||
var _sw = _ss * _sel_sw;
|
|
||||||
var _sh = _ss * _sel_sh;
|
|
||||||
|
|
||||||
var _shov = _hover && point_in_rectangle(_m[0], _m[1], _sx, _sy, _sx + _sw, _sy + _sh);
|
var _shov = _hover && point_in_rectangle(_m[0], _m[1], _sx, _sy, _sx + _sw, _sy + _sh);
|
||||||
var _aa = _bb[1] == _var? 1 : 0.5 + 0.5 * _shov;
|
var _aa = _bb[1] == _var? 1 : 0.5 + 0.5 * _shov;
|
||||||
|
|
||||||
draw_surface_ext(selecting_surface_tile, _sx, _sy, _ss, _ss, 0, c_white, _aa);
|
draw_surface_ext(selecting_surface_tile, _sx, _sy, _ss, _ss, 0, c_white, _aa);
|
||||||
|
|
||||||
if(_bb[1] == _var) {
|
if(_bb[1] == _var)
|
||||||
draw_set_color(COLORS._main_accent);
|
draw_sprite_stretched_ext(THEME.ui_panel, 1, _sx, _sy, _sw, _sh, COLORS._main_accent);
|
||||||
draw_rectangle(_sx, _sy, _sx + _sw, _sy + _sh, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(_shov && mouse_press(mb_left, _focus))
|
if(_shov && mouse_press(mb_left, _focus))
|
||||||
_bb[1] = _var;
|
_bb[1] = _var;
|
||||||
|
@ -372,12 +445,8 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
|
|
||||||
#region ++++ auto terrain ++++
|
#region ++++ auto terrain ++++
|
||||||
autoterrain = [];
|
autoterrain = [];
|
||||||
|
|
||||||
autoterrain_selecting = noone;
|
|
||||||
autoterrain_selector_h = 0;
|
autoterrain_selector_h = 0;
|
||||||
|
|
||||||
autoterrain_subtile_selecting = noone;
|
|
||||||
|
|
||||||
autoterrain_selector = new Inspector_Custom_Renderer(function(_x, _y, _w, _m, _hover, _focus, _panel = noone) {
|
autoterrain_selector = new Inspector_Custom_Renderer(function(_x, _y, _w, _m, _hover, _focus, _panel = noone) {
|
||||||
var _yy = _y;
|
var _yy = _y;
|
||||||
var _h = 0;
|
var _h = 0;
|
||||||
|
@ -393,7 +462,7 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
var by = _yy;
|
var by = _yy;
|
||||||
var bs = ui(24);
|
var bs = ui(24);
|
||||||
var _brush_tiles = brush.brush_width * brush.brush_height;
|
var _brush_tiles = brush.brush_width * brush.brush_height;
|
||||||
var _fromSel = (_brush_tiles == 9 || _brush_tiles == 15 || _brush_tiles == 48 || _brush_tiles == 55);
|
var _fromSel = _brush_tiles == 9 || _brush_tiles == 15 || _brush_tiles == 25 ||_brush_tiles == 48 || _brush_tiles == 55;
|
||||||
|
|
||||||
if(buttonInstant(THEME.button_hide, bx, by, bs, bs, _m, _focus, _hover, _fromSel? "New autoterrain from selection" : "New autoterrain", THEME.add_16, 0, COLORS._main_value_positive) == 2) {
|
if(buttonInstant(THEME.button_hide, bx, by, bs, bs, _m, _focus, _hover, _fromSel? "New autoterrain from selection" : "New autoterrain", THEME.add_16, 0, COLORS._main_value_positive) == 2) {
|
||||||
var _new_at = noone;
|
var _new_at = noone;
|
||||||
|
@ -404,13 +473,14 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
_indx[i * brush.brush_width + j] = brush.brush_indices[i][j][0];
|
_indx[i * brush.brush_width + j] = brush.brush_indices[i][j][0];
|
||||||
|
|
||||||
if(_brush_tiles == 9) _new_at = new tiler_brush_autoterrain(AUTOTERRAIN_TYPE.box9, _indx);
|
if(_brush_tiles == 9) _new_at = new tiler_brush_autoterrain(AUTOTERRAIN_TYPE.box9, _indx);
|
||||||
|
else if(_brush_tiles == 25) _new_at = new tiler_brush_autoterrain(AUTOTERRAIN_TYPE.box25, _indx);
|
||||||
else if(_brush_tiles == 15) _new_at = new tiler_brush_autoterrain(AUTOTERRAIN_TYPE.side15, _indx);
|
else if(_brush_tiles == 15) _new_at = new tiler_brush_autoterrain(AUTOTERRAIN_TYPE.side15, _indx);
|
||||||
else if(_brush_tiles == 48) _new_at = new tiler_brush_autoterrain(AUTOTERRAIN_TYPE.top48, _indx);
|
else if(_brush_tiles == 48) _new_at = new tiler_brush_autoterrain(AUTOTERRAIN_TYPE.top48, _indx);
|
||||||
else if(_brush_tiles == 55) _new_at = new tiler_brush_autoterrain(AUTOTERRAIN_TYPE.top55, _indx);
|
else if(_brush_tiles == 55) _new_at = new tiler_brush_autoterrain(AUTOTERRAIN_TYPE.top55, _indx);
|
||||||
else _new_at = new tiler_brush_autoterrain(AUTOTERRAIN_TYPE.box9, _indx);
|
else _new_at = new tiler_brush_autoterrain(AUTOTERRAIN_TYPE.box9, _indx);
|
||||||
|
|
||||||
autoterrain_selecting = array_length(autoterrain);
|
object_selecting = _new_at;
|
||||||
animated_selecting = noone;
|
object_select_id = noone;
|
||||||
array_push(autoterrain, _new_at);
|
array_push(autoterrain, _new_at);
|
||||||
|
|
||||||
if(!array_empty(_indx)) {
|
if(!array_empty(_indx)) {
|
||||||
|
@ -440,28 +510,16 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
var _px = _x + ui(8);
|
var _px = _x + ui(8);
|
||||||
var _py = _yy + ui(4);
|
var _py = _yy + ui(4);
|
||||||
|
|
||||||
var _prin = array_safe_get(_at.index, 0, noone);
|
var _prin = array_safe_get(_at.index, 0, undefined);
|
||||||
|
|
||||||
if(_prin == noone) {
|
if(_prin == undefined)
|
||||||
draw_set_color(COLORS._main_icon);
|
draw_sprite_stretched_ext(THEME.ui_panel, 1, _px, _py, _pw, _ph, COLORS._main_icon);
|
||||||
draw_rectangle(_px, _py, _px + _pw, _py + _ph, true);
|
else
|
||||||
|
drawTile(_tileSet, _tileAmo, _tileSiz, _prin, _px, _py, _pw, _ph);
|
||||||
} else {
|
|
||||||
var _prc = safe_mod(_prin, _tileAmo[0]);
|
|
||||||
var _prr = floor(_prin / _tileAmo[0]);
|
|
||||||
|
|
||||||
var _pr_tx = _prc * _tileSiz[0];
|
|
||||||
var _pr_ty = _prr * _tileSiz[1];
|
|
||||||
|
|
||||||
var _pr_sx = _pw / _tileSiz[0];
|
|
||||||
var _pr_sy = _ph / _tileSiz[1];
|
|
||||||
|
|
||||||
draw_surface_part_ext(_tileSet, _pr_tx, _pr_ty, _tileSiz[0], _tileSiz[1], _px, _py, _pr_sx, _pr_sy, c_white, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
var _tx = _px + _pw + ui(8);
|
var _tx = _px + _pw + ui(8);
|
||||||
var _hov = _hover && point_in_rectangle(_m[0], _m[1], _x, _yy, _x + _w, _yy + _hg - 1);
|
var _hov = _hover && point_in_rectangle(_m[0], _m[1], _x, _yy, _x + _w, _yy + _hg - 1);
|
||||||
var _cc = i == autoterrain_selecting? COLORS._main_accent : (_hov? COLORS._main_text : COLORS._main_text_sub);
|
var _cc = object_selecting == _at? COLORS._main_accent : (_hov? COLORS._main_text : COLORS._main_text_sub);
|
||||||
|
|
||||||
if(renaming == _at) {
|
if(renaming == _at) {
|
||||||
tb_rename.setFocusHover(_focus, _hover);
|
tb_rename.setFocusHover(_focus, _hover);
|
||||||
|
@ -479,7 +537,17 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_hov && _m[0] < _x + _w - ui(32)) {
|
if(_hov && _m[0] < _x + _w - ui(32)) {
|
||||||
if(_m[0] > _tx) {
|
if(is(object_selecting, tiler_rule)) {
|
||||||
|
TOOLTIP = "Set Rule selector";
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, _focus)) {
|
||||||
|
if(object_select_id != noone)
|
||||||
|
object_selecting.selection_rules[object_select_id] = [ "terrain", i ];
|
||||||
|
object_selecting = noone;
|
||||||
|
triggerRender();
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if(_m[0] > _tx) {
|
||||||
if(DOUBLE_CLICK && _focus) {
|
if(DOUBLE_CLICK && _focus) {
|
||||||
renaming = _at;
|
renaming = _at;
|
||||||
rename_text = _at.name;
|
rename_text = _at.name;
|
||||||
|
@ -488,8 +556,8 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
tb_rename.activate();
|
tb_rename.activate();
|
||||||
|
|
||||||
} else if(mouse_press(mb_left, _focus)) {
|
} else if(mouse_press(mb_left, _focus)) {
|
||||||
autoterrain_selecting = autoterrain_selecting == i? noone : i;
|
object_selecting = object_selecting == _at? noone : _at;
|
||||||
animated_selecting = noone;
|
object_select_id = noone;
|
||||||
|
|
||||||
brush.brush_indices = [[ [ _prin, 0 ] ]];
|
brush.brush_indices = [[ [ _prin, 0 ] ]];
|
||||||
brush.brush_width = 1;
|
brush.brush_width = 1;
|
||||||
|
@ -497,8 +565,7 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
palette_using = false;
|
palette_using = false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
draw_set_color(COLORS._main_accent);
|
draw_sprite_stretched_ext(THEME.ui_panel, 1, _px, _py, _pw, _ph, COLORS._main_accent);
|
||||||
draw_rectangle(_px, _py, _px + _pw, _py + _ph, true);
|
|
||||||
|
|
||||||
if(mouse_press(mb_left, _focus))
|
if(mouse_press(mb_left, _focus))
|
||||||
_at.open = !_at.open;
|
_at.open = !_at.open;
|
||||||
|
@ -531,6 +598,7 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
|
|
||||||
switch(_at.type) {
|
switch(_at.type) {
|
||||||
case AUTOTERRAIN_TYPE.box9 : _coll = 3; _roww = 3; _over = s_autoterrain_3x3; break;
|
case AUTOTERRAIN_TYPE.box9 : _coll = 3; _roww = 3; _over = s_autoterrain_3x3; break;
|
||||||
|
case AUTOTERRAIN_TYPE.box25 : _coll = 5; _roww = 5; _over = s_autoterrain_5x5; break;
|
||||||
case AUTOTERRAIN_TYPE.side15 : _coll = 5; _roww = 3; _over = s_autoterrain_5x3; break;
|
case AUTOTERRAIN_TYPE.side15 : _coll = 5; _roww = 3; _over = s_autoterrain_5x3; break;
|
||||||
case AUTOTERRAIN_TYPE.top48 : _coll = 12; _roww = 4; _over = s_autoterrain_8x6; break;
|
case AUTOTERRAIN_TYPE.top48 : _coll = 12; _roww = 4; _over = s_autoterrain_8x6; break;
|
||||||
case AUTOTERRAIN_TYPE.top55 : _coll = 11; _roww = 5; _over = s_autoterrain_11x5; break;
|
case AUTOTERRAIN_TYPE.top55 : _coll = 11; _roww = 5; _over = s_autoterrain_11x5; break;
|
||||||
|
@ -620,9 +688,8 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
draw_rectangle(_at_c_sx, _at_c_sy, _at_c_sx + _dtile_w, _at_c_sy + _dtile_h, true);
|
draw_rectangle(_at_c_sx, _at_c_sy, _at_c_sx + _dtile_w, _at_c_sy + _dtile_h, true);
|
||||||
|
|
||||||
if(mouse_press(mb_left, _focus)) {
|
if(mouse_press(mb_left, _focus)) {
|
||||||
autoterrain_selecting = i;
|
object_selecting = _at;
|
||||||
animated_selecting = noone;
|
object_select_id = object_select_id == _at_id? noone : _at_id;
|
||||||
autoterrain_subtile_selecting = autoterrain_subtile_selecting == _at_id? noone : _at_id;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mouse_press(mb_right, _focus))
|
if(mouse_press(mb_right, _focus))
|
||||||
|
@ -630,9 +697,9 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(autoterrain_selecting == i && autoterrain_subtile_selecting != noone) {
|
if(object_selecting == _at && object_select_id != noone) {
|
||||||
var _at_sl_x = autoterrain_subtile_selecting % _coll;
|
var _at_sl_x = object_select_id % _coll;
|
||||||
var _at_sl_y = floor(autoterrain_subtile_selecting / _coll);
|
var _at_sl_y = floor(object_select_id / _coll);
|
||||||
|
|
||||||
var _at_c_sx = _pre_sx + _at_sl_x * _dtile_w;
|
var _at_c_sx = _pre_sx + _at_sl_x * _dtile_w;
|
||||||
var _at_c_sy = _pre_sy + _at_sl_y * _dtile_h;
|
var _at_c_sy = _pre_sy + _at_sl_y * _dtile_h;
|
||||||
|
@ -649,7 +716,8 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
|
|
||||||
if(del != -1) {
|
if(del != -1) {
|
||||||
array_delete(autoterrain, del, 1);
|
array_delete(autoterrain, del, 1);
|
||||||
autoterrain_selecting = noone;
|
object_selecting = noone;
|
||||||
|
object_select_id = noone;
|
||||||
}
|
}
|
||||||
|
|
||||||
autoterrain_selector_h = max(ui(12), _ah);
|
autoterrain_selector_h = max(ui(12), _ah);
|
||||||
|
@ -837,8 +905,9 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
}
|
}
|
||||||
|
|
||||||
if(palette_tool == 0 && mouse_press(mb_left, _focus)) {
|
if(palette_tool == 0 && mouse_press(mb_left, _focus)) {
|
||||||
autoterrain_selecting = noone;
|
object_selecting = noone;
|
||||||
animated_selecting = noone;
|
object_select_id = noone;
|
||||||
|
|
||||||
palette_selecting = true;
|
palette_selecting = true;
|
||||||
palette_using = true;
|
palette_using = true;
|
||||||
palette_select_ss = [ _mtx, _mty ];
|
palette_select_ss = [ _mtx, _mty ];
|
||||||
|
@ -1060,10 +1129,7 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
|
|
||||||
#region ++++ animated tiles ++++
|
#region ++++ animated tiles ++++
|
||||||
animatedTiles = [];
|
animatedTiles = [];
|
||||||
|
|
||||||
animated_selecting = noone;
|
|
||||||
animated_selector_h = 0;
|
animated_selector_h = 0;
|
||||||
animated_subtile_selecting = noone;
|
|
||||||
|
|
||||||
aTiles = [];
|
aTiles = [];
|
||||||
aTilesIndex = [];
|
aTilesIndex = [];
|
||||||
|
@ -1112,11 +1178,11 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
_new_at = new tiler_brush_animated(_indx);
|
_new_at = new tiler_brush_animated(_indx);
|
||||||
|
|
||||||
if(_new_at != noone) {
|
if(_new_at != noone) {
|
||||||
animated_selecting = array_length(animatedTiles);
|
object_selecting = _new_at;
|
||||||
autoterrain_selecting = noone;
|
object_select_id = noone;
|
||||||
array_push(animatedTiles, _new_at);
|
array_push(animatedTiles, _new_at);
|
||||||
|
|
||||||
brush.brush_indices = [[ [ -(animated_selecting + 2), 0 ] ]];
|
brush.brush_indices = [[ [ -(array_length(animatedTiles) + 1), 0 ] ]];
|
||||||
brush.brush_width = 1;
|
brush.brush_width = 1;
|
||||||
brush.brush_height = 1;
|
brush.brush_height = 1;
|
||||||
}
|
}
|
||||||
|
@ -1144,28 +1210,16 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
var _px = _x + ui(8);
|
var _px = _x + ui(8);
|
||||||
var _py = _yy + ui(4);
|
var _py = _yy + ui(4);
|
||||||
|
|
||||||
var _prin = array_safe_get(_at.index, safe_mod(current_time / 1000 * 2, array_length(_at.index)), noone);
|
var _prin = array_safe_get(_at.index, safe_mod(current_time / 1000 * 2, array_length(_at.index)), undefined);
|
||||||
|
|
||||||
if(_prin == noone) {
|
if(_prin == undefined)
|
||||||
draw_set_color(COLORS._main_icon);
|
draw_sprite_stretched_ext(THEME.ui_panel, 1, _px, _py, _pw, _ph, COLORS._main_icon);
|
||||||
draw_rectangle(_px, _py, _px + _pw, _py + _ph, true);
|
else
|
||||||
|
drawTile(_tileSet, _tileAmo, _tileSiz, _prin, _px, _py, _pw, _ph);
|
||||||
} else {
|
|
||||||
var _prc = safe_mod(_prin, _tileAmo[0]);
|
|
||||||
var _prr = floor(_prin / _tileAmo[0]);
|
|
||||||
|
|
||||||
var _pr_tx = _prc * _tileSiz[0];
|
|
||||||
var _pr_ty = _prr * _tileSiz[1];
|
|
||||||
|
|
||||||
var _pr_sx = _pw / _tileSiz[0];
|
|
||||||
var _pr_sy = _ph / _tileSiz[1];
|
|
||||||
|
|
||||||
draw_surface_part_ext(_tileSet, _pr_tx, _pr_ty, _tileSiz[0], _tileSiz[1], _px, _py, _pr_sx, _pr_sy, c_white, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
var _tx = _px + _pw + ui(8);
|
var _tx = _px + _pw + ui(8);
|
||||||
var _hov = _hover && point_in_rectangle(_m[0], _m[1], _x, _yy, _x + _w, _yy + _hg - 1);
|
var _hov = _hover && point_in_rectangle(_m[0], _m[1], _x, _yy, _x + _w, _yy + _hg - 1);
|
||||||
var _cc = i == animated_selecting? COLORS._main_accent : (_hov? COLORS._main_text : COLORS._main_text_sub);
|
var _cc = object_selecting == _at? COLORS._main_accent : (_hov? COLORS._main_text : COLORS._main_text_sub);
|
||||||
|
|
||||||
if(renaming == _at) {
|
if(renaming == _at) {
|
||||||
tb_rename.setFocusHover(_focus, _hover);
|
tb_rename.setFocusHover(_focus, _hover);
|
||||||
|
@ -1183,6 +1237,24 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_hov && _m[0] < _x + _w - ui(32)) {
|
if(_hov && _m[0] < _x + _w - ui(32)) {
|
||||||
|
if(is(object_selecting, tiler_rule)) {
|
||||||
|
TOOLTIP = "Set Rule selector";
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, _focus)) {
|
||||||
|
if(object_select_id != noone)
|
||||||
|
object_selecting.selection_rules[object_select_id] = -(i + 2);
|
||||||
|
object_selecting = noone;
|
||||||
|
triggerRender();
|
||||||
|
}
|
||||||
|
} else if(is(object_selecting, tiler_rule_replacement)) {
|
||||||
|
TOOLTIP = "Set Rule replacement";
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, _focus)) {
|
||||||
|
object_selecting.index = -(i + 2);
|
||||||
|
object_selecting = noone;
|
||||||
|
triggerRender();
|
||||||
|
}
|
||||||
|
} else if(_m[0] > _tx) {
|
||||||
if(DOUBLE_CLICK && _focus) {
|
if(DOUBLE_CLICK && _focus) {
|
||||||
renaming = _at;
|
renaming = _at;
|
||||||
rename_text = _at.name;
|
rename_text = _at.name;
|
||||||
|
@ -1191,18 +1263,20 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
tb_rename.activate();
|
tb_rename.activate();
|
||||||
|
|
||||||
} else if(mouse_press(mb_left, _focus)) {
|
} else if(mouse_press(mb_left, _focus)) {
|
||||||
if(_m[0] > _tx) {
|
object_selecting = object_selecting == _at? noone : _at;
|
||||||
animated_selecting = animated_selecting == i? noone : i;
|
object_select_id = noone;
|
||||||
autoterrain_selecting = noone;
|
|
||||||
|
|
||||||
brush.brush_indices = [[ [ - (i + 2), 0 ] ]];
|
brush.brush_indices = [[ [ -(i + 2), 0 ] ]];
|
||||||
brush.brush_width = 1;
|
brush.brush_width = 1;
|
||||||
brush.brush_height = 1;
|
brush.brush_height = 1;
|
||||||
palette_using = false;
|
palette_using = false;
|
||||||
|
|
||||||
} else {
|
|
||||||
_at.open = !_at.open;
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
draw_sprite_stretched_ext(THEME.ui_panel, 1, _px, _py, _pw, _ph, COLORS._main_accent);
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, _focus))
|
||||||
|
_at.open = !_at.open;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1256,9 +1330,7 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
surface_reset_shader();
|
surface_reset_shader();
|
||||||
|
|
||||||
draw_surface_ext(_at.preview_surface_tile, _pre_sx, _pre_sy, _ss, _ss, 0, c_white, 1);
|
draw_surface_ext(_at.preview_surface_tile, _pre_sx, _pre_sy, _ss, _ss, 0, c_white, 1);
|
||||||
|
draw_sprite_stretched_ext(THEME.ui_panel, 1, _pre_sx, _pre_sy, _pre_sw * _ss, _pre_sh * _ss, COLORS._main_icon);
|
||||||
draw_set_color(COLORS._main_icon);
|
|
||||||
draw_rectangle(_pre_sx, _pre_sy, _pre_sx + _pre_sw * _ss, _pre_sy + _pre_sh * _ss, true);
|
|
||||||
|
|
||||||
var _dtile_w = _tileSiz[0] * _ss;
|
var _dtile_w = _tileSiz[0] * _ss;
|
||||||
var _dtile_h = _tileSiz[1] * _ss;
|
var _dtile_h = _tileSiz[1] * _ss;
|
||||||
|
@ -1276,10 +1348,8 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
draw_rectangle(_at_c_sx, _at_c_sy, _at_c_sx + _dtile_w, _at_c_sy + _dtile_h, true);
|
draw_rectangle(_at_c_sx, _at_c_sy, _at_c_sx + _dtile_w, _at_c_sy + _dtile_h, true);
|
||||||
|
|
||||||
if(mouse_press(mb_left, _focus)) {
|
if(mouse_press(mb_left, _focus)) {
|
||||||
animated_selecting = i;
|
object_selecting = _at;
|
||||||
autoterrain_selecting = noone;
|
object_select_id = object_select_id == _at_id? noone : _at_id;
|
||||||
|
|
||||||
animated_subtile_selecting = animated_subtile_selecting == _at_id? noone : _at_id;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mouse_press(mb_right, _focus))
|
if(mouse_press(mb_right, _focus))
|
||||||
|
@ -1287,15 +1357,14 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(animated_selecting == i && animated_subtile_selecting != noone) {
|
if(object_selecting == _at && object_select_id != noone) {
|
||||||
var _at_sl_x = animated_subtile_selecting % _coll;
|
var _at_sl_x = object_select_id % _coll;
|
||||||
var _at_sl_y = floor(animated_subtile_selecting / _coll);
|
var _at_sl_y = floor(object_select_id / _coll);
|
||||||
|
|
||||||
var _at_c_sx = _pre_sx + _at_sl_x * _dtile_w;
|
var _at_c_sx = _pre_sx + _at_sl_x * _dtile_w;
|
||||||
var _at_c_sy = _pre_sy + _at_sl_y * _dtile_h;
|
var _at_c_sy = _pre_sy + _at_sl_y * _dtile_h;
|
||||||
|
|
||||||
draw_set_color(COLORS._main_accent);
|
draw_sprite_stretched_ext(THEME.ui_panel, 1, _at_c_sx, _at_c_sy, _dtile_w, _dtile_h, COLORS._main_accent);
|
||||||
draw_rectangle(_at_c_sx, _at_c_sy, _at_c_sx + _dtile_w, _at_c_sy + _dtile_h, true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_yy += _pre_sh * _ss + ui(4);
|
_yy += _pre_sh * _ss + ui(4);
|
||||||
|
@ -1306,7 +1375,8 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
|
|
||||||
if(del != -1) {
|
if(del != -1) {
|
||||||
array_delete(animatedTiles, del, 1);
|
array_delete(animatedTiles, del, 1);
|
||||||
animated_selecting = noone;
|
object_selecting = noone;
|
||||||
|
object_select_id = noone;
|
||||||
refreshAnimatedData();
|
refreshAnimatedData();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1317,10 +1387,9 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
|
|
||||||
#region ++++ rules ++++
|
#region ++++ rules ++++
|
||||||
ruleTiles = [];
|
ruleTiles = [];
|
||||||
|
|
||||||
rule_selecting = noone;
|
|
||||||
rule_selector_h = 0;
|
rule_selector_h = 0;
|
||||||
rule_subtile_selecting = noone;
|
|
||||||
|
rule_dragging = noone;
|
||||||
|
|
||||||
rules_viewer = new Inspector_Custom_Renderer(function(_x, _y, _w, _m, _hover, _focus, _panel = noone) {
|
rules_viewer = new Inspector_Custom_Renderer(function(_x, _y, _w, _m, _hover, _focus, _panel = noone) {
|
||||||
var _yy = _y;
|
var _yy = _y;
|
||||||
|
@ -1339,7 +1408,10 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
|
|
||||||
if(buttonInstant(THEME.button_hide, bx, by, bs, bs, _m, _focus, _hover, "New rule", THEME.add_16, 0, COLORS._main_value_positive) == 2) {
|
if(buttonInstant(THEME.button_hide, bx, by, bs, bs, _m, _focus, _hover, "New rule", THEME.add_16, 0, COLORS._main_value_positive) == 2) {
|
||||||
var _new_rl = new tiler_rule();
|
var _new_rl = new tiler_rule();
|
||||||
|
_new_rl.name = $"rule {array_length(ruleTiles)}"
|
||||||
|
_new_rl.open = true;
|
||||||
array_push(ruleTiles, _new_rl);
|
array_push(ruleTiles, _new_rl);
|
||||||
|
triggerRender();
|
||||||
}
|
}
|
||||||
|
|
||||||
_h += bs + ui(4);
|
_h += bs + ui(4);
|
||||||
|
@ -1348,6 +1420,7 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
var _pd = ui(4);
|
var _pd = ui(4);
|
||||||
var _ah = _pd * 2;
|
var _ah = _pd * 2;
|
||||||
var del = -1;
|
var del = -1;
|
||||||
|
var rl_iHover = 0;
|
||||||
|
|
||||||
draw_sprite_stretched_ext(THEME.ui_panel_bg, 1, _x, _yy, _w, rule_selector_h, COLORS.node_composite_bg_blend, 1);
|
draw_sprite_stretched_ext(THEME.ui_panel_bg, 1, _x, _yy, _w, rule_selector_h, COLORS.node_composite_bg_blend, 1);
|
||||||
|
|
||||||
|
@ -1362,34 +1435,28 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
var _px = _x + ui(8);
|
var _px = _x + ui(8);
|
||||||
var _py = _yy + ui(4);
|
var _py = _yy + ui(4);
|
||||||
|
|
||||||
var _prin = 0;
|
if(_m[1] > _yy) rl_iHover = i;
|
||||||
|
|
||||||
if(_prin == noone) {
|
var _prin = array_safe_get(_rl.replacements, 0, undefined);
|
||||||
draw_set_color(COLORS._main_icon);
|
|
||||||
draw_rectangle(_px, _py, _px + _pw, _py + _ph, true);
|
|
||||||
|
|
||||||
} else {
|
if(_prin == undefined)
|
||||||
var _prc = safe_mod(_prin, _tileAmo[0]);
|
draw_sprite_stretched_ext(THEME.ui_panel, 1, _px, _py, _pw, _ph, COLORS._main_icon);
|
||||||
var _prr = floor(_prin / _tileAmo[0]);
|
else if(is(_prin, tiler_rule_replacement)) {
|
||||||
|
var _ind = array_safe_get(_prin.index, 0);
|
||||||
var _pr_tx = _prc * _tileSiz[0];
|
drawTile(_tileSet, _tileAmo, _tileSiz, _ind, _px, _py, _pw, _ph);
|
||||||
var _pr_ty = _prr * _tileSiz[1];
|
|
||||||
|
|
||||||
var _pr_sx = _pw / _tileSiz[0];
|
|
||||||
var _pr_sy = _ph / _tileSiz[1];
|
|
||||||
|
|
||||||
draw_surface_part_ext(_tileSet, _pr_tx, _pr_ty, _tileSiz[0], _tileSiz[1], _px, _py, _pr_sx, _pr_sy, c_white, 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var _tx = _px + _pw + ui(8);
|
var _tx = _px + _pw + ui(8);
|
||||||
var _hov = _hover && point_in_rectangle(_m[0], _m[1], _x, _yy, _x + _w, _yy + _hg - 1);
|
var _hov = _hover && point_in_rectangle(_m[0], _m[1], _x, _yy, _x + _w, _yy + _hg - 1);
|
||||||
var _cc = _hov? COLORS._main_text : COLORS._main_text_sub;
|
|
||||||
|
|
||||||
if(renaming == _rl) {
|
if(renaming == _rl) {
|
||||||
tb_rename.setFocusHover(_focus, _hover);
|
tb_rename.setFocusHover(_focus, _hover);
|
||||||
tb_rename.draw(_tx, _yy, _w - _pw - ui(8), _hg, rename_text, _m);
|
tb_rename.draw(_tx, _yy, _w - _pw - ui(8), _hg, rename_text, _m);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
var _cc = _hov? COLORS._main_text : COLORS._main_text_sub;
|
||||||
|
if(rule_dragging == _rl) _cc = COLORS._main_accent;
|
||||||
|
|
||||||
draw_set_text(f_p2, fa_left, fa_center, _cc);
|
draw_set_text(f_p2, fa_left, fa_center, _cc);
|
||||||
draw_text_add(_tx, _yy + _hg / 2, _rl.name);
|
draw_text_add(_tx, _yy + _hg / 2, _rl.name);
|
||||||
|
|
||||||
|
@ -1400,33 +1467,225 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
del = i;
|
del = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_hov && _m[0] < _x + _w - ui(32)) {
|
if(_hov && _m[0] < _x + _w - ui(32 + 160)) {
|
||||||
if(DOUBLE_CLICK && _focus) {
|
if(_m[0] > _tx) {
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, _focus)) {
|
||||||
|
rule_dragging = _rl;
|
||||||
|
|
||||||
|
} else if(DOUBLE_CLICK && _focus) {
|
||||||
renaming = _rl;
|
renaming = _rl;
|
||||||
rename_text = _rl.name;
|
rename_text = _rl.name;
|
||||||
|
|
||||||
tb_rename._current_text = _rl.name;
|
tb_rename._current_text = _rl.name;
|
||||||
tb_rename.activate();
|
tb_rename.activate();
|
||||||
|
}
|
||||||
} else if(mouse_press(mb_left, _focus)) {
|
|
||||||
if(_m[0] > _tx) {
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
draw_sprite_stretched_ext(THEME.ui_panel, 1, _px, _py, _pw, _ph, COLORS._main_accent);
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, _focus))
|
||||||
_rl.open = !_rl.open;
|
_rl.open = !_rl.open;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var _atWid = _rl.sl_prop;
|
||||||
|
var _scw = ui(120);
|
||||||
|
var _sch = ui(20);
|
||||||
|
var _scx = _x + _w - _scw - ui(32 + 8);
|
||||||
|
var _scy = _yy + _hg / 2 - _sch / 2;
|
||||||
|
|
||||||
|
_atWid.setFocusHover(_focus, _hover);
|
||||||
|
_atWid.rx = rules_viewer.rx; _atWid.ry = rules_viewer.ry;
|
||||||
|
_atWid.draw(_scx, _scy, _scw, _sch, _rl.probability, _m);
|
||||||
|
if(_rl.probability != _rl._probability) {
|
||||||
|
_rl._probability = _rl.probability;
|
||||||
|
triggerRender();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var _acw = ui(20);
|
||||||
|
var _ach = ui(20);
|
||||||
|
var _acx = _scx - _acw - ui(8);
|
||||||
|
var _acy = _yy + _hg / 2 - _sch / 2;
|
||||||
|
var _ahv = _hover && point_in_rectangle(_m[0], _m[1], _acx, _acy, _acx + _acw, _acy + _ach);
|
||||||
|
|
||||||
|
if(_ahv) {
|
||||||
|
TOOLTIP = "Active";
|
||||||
|
if(mouse_press(mb_left, _focus)) {
|
||||||
|
_rl.active = !_rl.active;
|
||||||
|
triggerRender();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
draw_sprite_stretched_ext(THEME.checkbox_def, _ahv, _acx, _acy, _acw, _ach, c_white);
|
||||||
|
if(_rl.active) draw_sprite_stretched_ext(THEME.checkbox_def, 2, _acx, _acy, _acw, _ach, COLORS._main_accent);
|
||||||
|
|
||||||
_yy += _hg;
|
_yy += _hg;
|
||||||
_ah += _hg;
|
_ah += _hg;
|
||||||
|
|
||||||
if(_at.open) {
|
if(_rl.open) {
|
||||||
_yy += ui(4);
|
_yy += ui(4);
|
||||||
_ah += ui(4);
|
_ah += ui(4);
|
||||||
|
|
||||||
|
var _sls = ui(28);
|
||||||
|
var _radw = _rl.size[0] + _rl.range * 2;
|
||||||
|
var _radh = _rl.size[1] + _rl.range * 2;
|
||||||
|
var _slw = ui(16) + _radw * _sls;
|
||||||
|
var _slh = ui(16) + _radh * _sls;
|
||||||
|
var _hh0 = _slh;
|
||||||
|
|
||||||
|
draw_sprite_stretched_ext(THEME.ui_panel_bg, 1, _x + ui(8), _yy, _slw, _slh, COLORS.node_composite_bg_blend, 1);
|
||||||
|
|
||||||
|
for( var j = 0, m = array_length(_rl.selection_rules); j < m; j++ ) {
|
||||||
|
var _rl_sel = _rl.selection_rules[j];
|
||||||
|
var _rl_col = j % _radw;
|
||||||
|
var _rl_row = floor(j / _radw);
|
||||||
|
|
||||||
|
var _cen = _rl_col >= _rl.range && _rl_col < _rl.range + _rl.size[0] &&
|
||||||
|
_rl_row >= _rl.range && _rl_row < _rl.range + _rl.size[1];
|
||||||
|
|
||||||
|
var _rl_x = _x + ui(16) + _rl_col * _sls;
|
||||||
|
var _rl_y = _yy + ui( 8) + _rl_row * _sls;
|
||||||
|
|
||||||
|
var _rl_selected = object_selecting == _rl && object_select_id == j;
|
||||||
|
var _rl_hov = _hover && point_in_rectangle(_m[0], _m[1], _rl_x, _rl_y, _rl_x + _sls - 1, _rl_y + _sls - 1);
|
||||||
|
var _pad = ui(2);
|
||||||
|
|
||||||
|
var _cc = _rl_selected? COLORS._main_accent : COLORS._main_icon;
|
||||||
|
var _aa = _rl_selected? 1 : .5 + _rl_hov * .5;
|
||||||
|
|
||||||
|
if(is_array(_rl_sel)) {
|
||||||
|
var _autt = autoterrain[_rl_sel[1]];
|
||||||
|
drawTile(_tileSet, _tileAmo, _tileSiz, _autt.index[0], _rl_x + ui(2), _rl_y + ui(2), _sls - ui(4), _sls - ui(4));
|
||||||
|
draw_sprite_uniform(THEME.circle, 0, _rl_x + _sls - ui(8), _rl_y + _sls - ui(8), 1, COLORS._main_accent);
|
||||||
|
|
||||||
|
} else if (_rl_sel == -10000) {
|
||||||
|
draw_sprite_uniform(THEME.cross, 0, _rl_x + _sls / 2, _rl_y + _sls / 2, 1, _cc, _aa);
|
||||||
|
|
||||||
|
} else if(_rl_sel != -1) {
|
||||||
|
drawTile(_tileSet, _tileAmo, _tileSiz, _rl_sel, _rl_x + ui(2), _rl_y + ui(2), _sls - ui(4), _sls - ui(4));
|
||||||
|
|
||||||
|
} else if(!_cen) _pad = ui(10);
|
||||||
|
|
||||||
|
draw_sprite_stretched_ext(THEME.ui_panel, 1 + _cen, _rl_x + _pad, _rl_y + _pad, _sls - _pad * 2, _sls - _pad * 2, _cc, _aa);
|
||||||
|
|
||||||
|
if(_rl_hov) {
|
||||||
|
if(mouse_press(mb_left, _focus)) {
|
||||||
|
object_selecting = _rl_selected? noone : _rl;
|
||||||
|
object_select_id = j;
|
||||||
|
|
||||||
|
triggerRender();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(mouse_press(mb_right, _focus)) {
|
||||||
|
_rl.selection_rules[j] = -1;
|
||||||
|
object_selecting = noone;
|
||||||
|
object_select_id = noone;
|
||||||
|
|
||||||
|
triggerRender();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(del != -1) array_delete(ruleTiles, del, 1);
|
draw_sprite_uniform(THEME.arrow, 0, _x + ui(8) + _slw + ui(8), _yy + _slh / 2, 1, COLORS._main_icon, 1);
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
var _rep = _rl.replacements;
|
||||||
|
var _siz = _rl.size;
|
||||||
|
|
||||||
|
var _rpw = _sls * _siz[0];
|
||||||
|
var _rph = _sls * _siz[1];
|
||||||
|
|
||||||
|
var _dx = ui(8) + _slw + ui(16);
|
||||||
|
var _rx = _x + _dx;
|
||||||
|
var _slw = _w - _dx - ui(8);
|
||||||
|
var _col = max(1, floor((_slw - ui(16)) / _rpw));
|
||||||
|
var _row = ceil((array_length(_rep) + 1) / _col);
|
||||||
|
var _slh = ui(16) + _row * _rph;
|
||||||
|
|
||||||
|
draw_sprite_stretched_ext(THEME.ui_panel_bg, 1, _rx, _yy, _slw, max(_hh0, _slh), COLORS.node_composite_bg_blend, 1);
|
||||||
|
|
||||||
|
var del_rep = -1;
|
||||||
|
|
||||||
|
for( var j = 0, m = array_length(_rep) + 1; j < m; j++ ) {
|
||||||
|
var _rcl = j % _col;
|
||||||
|
var _rrw = floor(j / _col);
|
||||||
|
|
||||||
|
var _rpx = _rx + ui(8) + _rcl * _rpw;
|
||||||
|
var _rpy = _yy + ui(8) + _rrw * _rph;
|
||||||
|
var _rl_hov = _hover && point_in_rectangle(_m[0], _m[1], _rpx, _rpy, _rpx + _rpw, _rpy + _rph);
|
||||||
|
|
||||||
|
if(j == 0) {
|
||||||
|
var _cc = _rl_hov? COLORS._main_value_positive : COLORS._main_icon;
|
||||||
|
draw_sprite_uniform(THEME.add_16, 0, _rpx + _rpw / 2, _rpy + _rph / 2, 1, _cc);
|
||||||
|
|
||||||
|
if(_rl_hov && mouse_press(mb_left, _focus)) {
|
||||||
|
var _new_rep = new tiler_rule_replacement([-1]);
|
||||||
|
array_push(_rl.replacements, _new_rep);
|
||||||
|
object_selecting = _new_rep;
|
||||||
|
object_select_id = _rl;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var _replace = _rep[j - 1];
|
||||||
|
var _repIndex = _replace.index;
|
||||||
|
if(!is_array(_repIndex)) continue;
|
||||||
|
|
||||||
|
for( var k = 0, q = array_length(_repIndex); k < q; k++ ) {
|
||||||
|
var _repBlockCol = k % _siz[0];
|
||||||
|
var _repBlockRow = floor(k / _siz[0]);
|
||||||
|
var _rpbx = _rpx + _repBlockCol * _sls;
|
||||||
|
var _rpby = _rpy + _repBlockRow * _sls;
|
||||||
|
|
||||||
|
if(_replace.index[k] != -1) drawTile(_tileSet, _tileAmo, _tileSiz, _replace.index[k], _rpbx + ui(2), _rpby + ui(2), _sls - ui(4), _sls - ui(4));
|
||||||
|
}
|
||||||
|
|
||||||
|
var _rl_selected = object_selecting == _replace;
|
||||||
|
var _cc = _rl_selected? COLORS._main_accent : COLORS._main_icon;
|
||||||
|
var _aa = _rl_selected? 1 : .5 + _rl_hov * .5;
|
||||||
|
draw_sprite_stretched_ext(THEME.ui_panel, 1, _rpx + ui(2), _rpy + ui(2), _rpw - ui(4), _rph - ui(4), _cc, _aa);
|
||||||
|
|
||||||
|
if(_rl_hov) {
|
||||||
|
if(mouse_press(mb_left, _focus)) {
|
||||||
|
object_selecting = object_selecting == _replace? noone : _replace;
|
||||||
|
object_select_id = _rl;
|
||||||
|
triggerRender();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(mouse_press(mb_right, _focus)) {
|
||||||
|
del_rep = j;
|
||||||
|
triggerRender();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(del_rep != -1) {
|
||||||
|
array_delete(_rep, del_rep, 1);
|
||||||
|
triggerRender();
|
||||||
|
}
|
||||||
|
|
||||||
|
_yy += max(_hh0, _slh) + ui(8);
|
||||||
|
_ah += max(_hh0, _slh) + ui(8);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(rule_dragging != noone) {
|
||||||
|
array_remove(ruleTiles, rule_dragging);
|
||||||
|
array_insert(ruleTiles, rl_iHover, rule_dragging);
|
||||||
|
|
||||||
|
if(mouse_release(mb_left)) {
|
||||||
|
rule_dragging = noone;
|
||||||
|
triggerRender();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(del != -1) {
|
||||||
|
array_delete(ruleTiles, del, 1);
|
||||||
|
triggerRender();
|
||||||
|
}
|
||||||
|
|
||||||
rule_selector_h = max(ui(12), _ah);
|
rule_selector_h = max(ui(12), _ah);
|
||||||
return _h + _ah;
|
return _h + _ah;
|
||||||
|
@ -1444,9 +1703,9 @@ function Node_Tile_Tileset(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
|
|
||||||
input_display_list = [ 1, 0,
|
input_display_list = [ 1, 0,
|
||||||
["Tileset", false, noone, tile_selector_toggler ], tile_selector,
|
["Tileset", false, noone, tile_selector_toggler ], tile_selector,
|
||||||
["Autoterrain", true, noone, autoterrain_selector_toggler ], autoterrain_selector,
|
["Autoterrains", true, noone, autoterrain_selector_toggler ], autoterrain_selector,
|
||||||
["Palette", true, noone, palette_viewer_toggler ], palette_viewer,
|
["Palette", true, noone, palette_viewer_toggler ], palette_viewer,
|
||||||
["Animated", true, 2, animated_viewer_toggler ], animated_viewer,
|
["Animated tiles",true, 2, animated_viewer_toggler ], animated_viewer,
|
||||||
["Rules", true, noone, rules_viewer_toggler ], rules_viewer,
|
["Rules", true, noone, rules_viewer_toggler ], rules_viewer,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
function file_read_all(path) { #region
|
function file_read_all(path) {
|
||||||
INLINE
|
INLINE
|
||||||
|
|
||||||
var f = file_text_open_read(path);
|
var f = file_text_open_read(path);
|
||||||
|
@ -9,9 +9,9 @@ function file_read_all(path) { #region
|
||||||
s += string(file_text_readln(f));
|
s += string(file_text_readln(f));
|
||||||
file_text_close(f);
|
file_text_close(f);
|
||||||
return s;
|
return s;
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
function file_text_read_all_lines(path) { #region
|
function file_text_read_all_lines(path) {
|
||||||
INLINE
|
INLINE
|
||||||
|
|
||||||
var f = file_text_open_read(path);
|
var f = file_text_open_read(path);
|
||||||
|
@ -22,9 +22,9 @@ function file_text_read_all_lines(path) { #region
|
||||||
array_push(s, file_text_readln(f));
|
array_push(s, file_text_readln(f));
|
||||||
file_text_close(f);
|
file_text_close(f);
|
||||||
return s;
|
return s;
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
function file_text_write_all(path, str) { #region
|
function file_text_write_all(path, str) {
|
||||||
INLINE
|
INLINE
|
||||||
|
|
||||||
if(file_exists_empty(path)) file_delete(path);
|
if(file_exists_empty(path)) file_delete(path);
|
||||||
|
@ -34,4 +34,4 @@ function file_text_write_all(path, str) { #region
|
||||||
|
|
||||||
file_text_write_string(f, str);
|
file_text_write_string(f, str);
|
||||||
file_text_close(f);
|
file_text_close(f);
|
||||||
} #endregion
|
}
|
|
@ -60,6 +60,8 @@ function tiler_tool_brush(node, _brush, eraser = false) : tiler_tool(node) const
|
||||||
_auto.drawing_start(drawing_surface, isEraser);
|
_auto.drawing_start(drawing_surface, isEraser);
|
||||||
tiler_draw_point_brush(brush, mouse_cur_x, mouse_cur_y, false);
|
tiler_draw_point_brush(brush, mouse_cur_x, mouse_cur_y, false);
|
||||||
_auto.drawing_end();
|
_auto.drawing_end();
|
||||||
|
|
||||||
|
apply_draw_surface();
|
||||||
}
|
}
|
||||||
|
|
||||||
mouse_holding = true;
|
mouse_holding = true;
|
||||||
|
@ -75,7 +77,6 @@ function tiler_tool_brush(node, _brush, eraser = false) : tiler_tool(node) const
|
||||||
}
|
}
|
||||||
|
|
||||||
mouse_holding = false;
|
mouse_holding = false;
|
||||||
|
|
||||||
apply_draw_surface();
|
apply_draw_surface();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,6 +96,7 @@ function tiler_tool_brush(node, _brush, eraser = false) : tiler_tool(node) const
|
||||||
_auto.drawing_end();
|
_auto.drawing_end();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
apply_draw_surface();
|
||||||
}
|
}
|
||||||
|
|
||||||
mouse_pre_draw_x = mouse_cur_x;
|
mouse_pre_draw_x = mouse_cur_x;
|
||||||
|
|
|
@ -21,12 +21,11 @@ void main() {
|
||||||
gl_FragColor = vec4(0.);
|
gl_FragColor = vec4(0.);
|
||||||
|
|
||||||
vec2 px = v_vTexcoord * dimension;
|
vec2 px = v_vTexcoord * dimension;
|
||||||
vec2 tileTx = mod(px, tileSize) / tileSize;
|
vec2 tileTx, texTx;
|
||||||
vec2 texTx;
|
|
||||||
float index = 0.;
|
float index = 0.;
|
||||||
|
|
||||||
vec2 tileAmo = floor(tileTextureDim / tileSize);
|
vec2 tileAmo = floor(tileTextureDim / tileSize);
|
||||||
vec4 samIdx = texture2D( indexTexture, floor(px / tileSize) / indexTextureDim );
|
vec4 samIdx = texture2D( indexTexture, floor(px / tileSize) / (indexTextureDim - 1.) );
|
||||||
if(samIdx.r == 0.) return;
|
if(samIdx.r == 0.) return;
|
||||||
|
|
||||||
if(samIdx.r > 0.) {
|
if(samIdx.r > 0.) {
|
||||||
|
|
|
@ -4,6 +4,8 @@ varying vec4 v_vColour;
|
||||||
uniform vec2 dimension;
|
uniform vec2 dimension;
|
||||||
uniform float height;
|
uniform float height;
|
||||||
uniform float smooth;
|
uniform float smooth;
|
||||||
|
uniform int normal;
|
||||||
|
uniform int swapx;
|
||||||
|
|
||||||
float bright(in vec4 col) { return dot(col.rgb, vec3(0.2126, 0.7152, 0.0722)) * col.a; }
|
float bright(in vec4 col) { return dot(col.rgb, vec3(0.2126, 0.7152, 0.0722)) * col.a; }
|
||||||
|
|
||||||
|
@ -19,7 +21,7 @@ void main() {
|
||||||
float v0 = bright(texture2D(gm_BaseTexture, v_vTexcoord + tx * vec2( 0., -1.) * siz));
|
float v0 = bright(texture2D(gm_BaseTexture, v_vTexcoord + tx * vec2( 0., -1.) * siz));
|
||||||
float v1 = bright(texture2D(gm_BaseTexture, v_vTexcoord + tx * vec2( 0., 1.) * siz));
|
float v1 = bright(texture2D(gm_BaseTexture, v_vTexcoord + tx * vec2( 0., 1.) * siz));
|
||||||
|
|
||||||
vec2 normal;
|
vec2 _n;
|
||||||
|
|
||||||
if(smooth > 0.) {
|
if(smooth > 0.) {
|
||||||
float d0 = bright(texture2D(gm_BaseTexture, v_vTexcoord + tx * vec2( 1., -1.) * siz));
|
float d0 = bright(texture2D(gm_BaseTexture, v_vTexcoord + tx * vec2( 1., -1.) * siz));
|
||||||
|
@ -27,7 +29,7 @@ void main() {
|
||||||
float d2 = bright(texture2D(gm_BaseTexture, v_vTexcoord + tx * vec2(-1., 1.) * siz));
|
float d2 = bright(texture2D(gm_BaseTexture, v_vTexcoord + tx * vec2(-1., 1.) * siz));
|
||||||
float d3 = bright(texture2D(gm_BaseTexture, v_vTexcoord + tx * vec2( 1., 1.) * siz));
|
float d3 = bright(texture2D(gm_BaseTexture, v_vTexcoord + tx * vec2( 1., 1.) * siz));
|
||||||
|
|
||||||
normal = (vec2(h1 - col, 0.)
|
_n = (vec2(h1 - col, 0.)
|
||||||
+ vec2(col - h0, 0.)
|
+ vec2(col - h0, 0.)
|
||||||
+ vec2(0., v1 - col)
|
+ vec2(0., v1 - col)
|
||||||
+ vec2(0., col - v0)
|
+ vec2(0., col - v0)
|
||||||
|
@ -38,14 +40,18 @@ void main() {
|
||||||
) / (2. + 2. * sqrt(2.));
|
) / (2. + 2. * sqrt(2.));
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
normal = (vec2(h1 - col, 0.)
|
_n = (vec2(h1 - col, 0.)
|
||||||
+ vec2(col - h0, 0.)
|
+ vec2(col - h0, 0.)
|
||||||
+ vec2(0., v1 - col)
|
+ vec2(0., v1 - col)
|
||||||
+ vec2(0., col - v0)
|
+ vec2(0., col - v0)
|
||||||
) / 2.;
|
) / 2.;
|
||||||
}
|
}
|
||||||
|
|
||||||
normal = normal * height + 0.5;
|
if(swapx == 1) _n.x = -_n.x;
|
||||||
|
_n = _n * height;
|
||||||
|
|
||||||
gl_FragColor = vec4(normal, 1., c.a);
|
vec3 n3 = vec3(_n, 1.);
|
||||||
|
if(normal == 1) n3 = normalize(n3);
|
||||||
|
|
||||||
|
gl_FragColor = vec4(.5 + n3 * .5, c.a);
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,6 +62,13 @@ float dot2(in vec2 v ) { return dot(v,v); }
|
||||||
|
|
||||||
mat2 rot(in float ang) { return mat2(cos(ang), - sin(ang), sin(ang), cos(ang)); }
|
mat2 rot(in float ang) { return mat2(cos(ang), - sin(ang), sin(ang), cos(ang)); }
|
||||||
|
|
||||||
|
float smin( float a, float b, float k ) {
|
||||||
|
if(k == 0.) return min(a, b);
|
||||||
|
k *= 1.0/(1.0-sqrt(0.5));
|
||||||
|
float h = max( k-abs(a-b), 0.0 )/k;
|
||||||
|
return min(a,b) - k*0.5*(1.0+h-sqrt(1.0-h*(h-2.0)));
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
float eval_curve_segment_t(in float _y0, in float ax0, in float ay0, in float bx1, in float by1, in float _y1, in float prog) {
|
float eval_curve_segment_t(in float _y0, in float ax0, in float ay0, in float bx1, in float by1, in float _y1, in float prog) {
|
||||||
|
@ -260,7 +267,7 @@ float sdDonut(vec2 p, float s) {
|
||||||
return max(o, -i);
|
return max(o, -i);
|
||||||
}
|
}
|
||||||
|
|
||||||
float sdGear(vec2 p, float s, int teeth, vec2 teethSize, float teethAngle) {
|
float sdGear(vec2 p, float s, int teeth, vec2 teethSize, float teethAngle, float corner) {
|
||||||
|
|
||||||
float teeth_w = teethSize.y;
|
float teeth_w = teethSize.y;
|
||||||
float teeth_h = teethSize.x;
|
float teeth_h = teethSize.x;
|
||||||
|
@ -273,13 +280,16 @@ float sdGear(vec2 p, float s, int teeth, vec2 teethSize, float teethAngle) {
|
||||||
float d = o;
|
float d = o;
|
||||||
|
|
||||||
float _angSt = TAU / float(teeth);
|
float _angSt = TAU / float(teeth);
|
||||||
|
float irad = corner / max(dimension.x, dimension.y) * 16.;
|
||||||
|
|
||||||
for(int i = 0; i < teeth; i++) {
|
for(int i = 0; i < teeth; i++) {
|
||||||
_p = p;
|
_p = p;
|
||||||
_p = _p * rot(radians(teethAngle) + float(i) * _angSt);
|
_p = _p * rot(radians(teethAngle) + float(i) * _angSt);
|
||||||
_p = _p - vec2(1. - teeth_w, .0);
|
_p = _p - vec2(1. - teeth_w, .0);
|
||||||
|
|
||||||
s1 = sdBox(_p, vec2(teeth_w, teeth_h));
|
s1 = sdRoundBox(_p, vec2(teeth_w, teeth_h), vec4(corner / 2., corner / 2., 0., 0.));
|
||||||
d = min(d, s1);
|
// d = min(d, s1);
|
||||||
|
d = smin(d, s1, irad);
|
||||||
}
|
}
|
||||||
|
|
||||||
d = max(d, -i);
|
d = max(d, -i);
|
||||||
|
@ -451,7 +461,7 @@ void main() {
|
||||||
else if(shape == 14) { d = sdCutDisk( coord, 1., inner ); }
|
else if(shape == 14) { d = sdCutDisk( coord, 1., inner ); }
|
||||||
else if(shape == 15) { d = sdPie( coord, vec2(sin(angle), cos(angle)), 1. ); }
|
else if(shape == 15) { d = sdPie( coord, vec2(sin(angle), cos(angle)), 1. ); }
|
||||||
else if(shape == 16) { d = sdRoundedCross( coord, 1. - corner ) - corner; }
|
else if(shape == 16) { d = sdRoundedCross( coord, 1. - corner ) - corner; }
|
||||||
else if(shape == 18) { d = sdGear( coord, inner, teeth, teethSize, teethAngle); }
|
else if(shape == 18) { d = sdGear( coord, inner, teeth, teethSize, teethAngle, corner); }
|
||||||
else if(shape == 19) { d = pow(pow(abs(coord.x), squircle_factor) + pow(abs(coord.y), squircle_factor), 1. / squircle_factor) - 1.; }
|
else if(shape == 19) { d = pow(pow(abs(coord.x), squircle_factor) + pow(abs(coord.y), squircle_factor), 1. / squircle_factor) - 1.; }
|
||||||
else if(shape == 17) { d = sdArrow( v_vTexcoord, p1, p2, thickness, arrow, arrow_head); }
|
else if(shape == 17) { d = sdArrow( v_vTexcoord, p1, p2, thickness, arrow, arrow_head); }
|
||||||
else if(shape == 20) { d = sdSegment(v_vTexcoord, p1, p2) - thickness; }
|
else if(shape == 20) { d = sdSegment(v_vTexcoord, p1, p2) - thickness; }
|
||||||
|
|
73
shaders/sh_tile_rule_apply/sh_tile_rule_apply.fsh
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
varying vec2 v_vTexcoord;
|
||||||
|
varying vec4 v_vColour;
|
||||||
|
|
||||||
|
uniform sampler2D group;
|
||||||
|
uniform vec2 dimension;
|
||||||
|
uniform float seed;
|
||||||
|
|
||||||
|
uniform float probability;
|
||||||
|
|
||||||
|
uniform vec2 size;
|
||||||
|
uniform int range;
|
||||||
|
uniform float selection[64];
|
||||||
|
|
||||||
|
uniform float replacements[1024];
|
||||||
|
uniform int replacementCount;
|
||||||
|
|
||||||
|
vec2 tx = 1. / dimension;
|
||||||
|
|
||||||
|
float random (in vec2 st, float seed) { return fract(sin(dot(st.xy + seed / 1000., vec2(1892.9898, 78.23453))) * 437.54123); }
|
||||||
|
|
||||||
|
bool match(in vec2 p) {
|
||||||
|
int _w = int(size.x) + range * 2;
|
||||||
|
int _h = int(size.y) + range * 2;
|
||||||
|
|
||||||
|
for(int i = 0; i < _h; i++)
|
||||||
|
for(int j = 0; j < _w; j++) {
|
||||||
|
float selInd = selection[i * _w + j];
|
||||||
|
int _x = j - range;
|
||||||
|
int _y = i - range;
|
||||||
|
|
||||||
|
if(selInd == -1.) continue; // skip matching
|
||||||
|
if(selInd == -10000.) selInd = -1.; // match empty
|
||||||
|
|
||||||
|
vec2 sx = p + vec2(_x, _y) * tx;
|
||||||
|
|
||||||
|
if(selInd >= 10000.) {
|
||||||
|
vec4 gr = texture2D( group, sx );
|
||||||
|
if(gr.r != selInd) return false;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
vec4 sp = texture2D( gm_BaseTexture, sx );
|
||||||
|
if(sp.r - 1. != selInd) return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
vec4 base = texture2D( gm_BaseTexture, v_vTexcoord );
|
||||||
|
gl_FragColor = base;
|
||||||
|
|
||||||
|
vec2 origin = v_vTexcoord;
|
||||||
|
int repShf = -1;
|
||||||
|
|
||||||
|
for(int i = 0; i < int(size.y); i++)
|
||||||
|
for(int j = 0; j < int(size.x); j++) {
|
||||||
|
vec2 o = v_vTexcoord - vec2(j, i) * tx;
|
||||||
|
if(match(o)) {
|
||||||
|
origin = o;
|
||||||
|
repShf = i * int(size.x) + j;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(repShf == -1) return;
|
||||||
|
|
||||||
|
float prop = random(origin, seed);
|
||||||
|
if(prop > probability) return;
|
||||||
|
|
||||||
|
int repIndex = int(random(origin, seed + 100.) * float(replacementCount)) * int(size.x * size.y);
|
||||||
|
gl_FragColor = vec4(replacements[repIndex + repShf] + 1., 0., 0., 1.);
|
||||||
|
}
|
19
shaders/sh_tile_rule_apply/sh_tile_rule_apply.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_tile_rule_apply/sh_tile_rule_apply.yy
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"$GMShader":"",
|
||||||
|
"%Name":"sh_tile_rule_apply",
|
||||||
|
"name":"sh_tile_rule_apply",
|
||||||
|
"parent":{
|
||||||
|
"name":"shaders",
|
||||||
|
"path":"folders/nodes/data/tiler/shaders.yy",
|
||||||
|
},
|
||||||
|
"resourceType":"GMShader",
|
||||||
|
"resourceVersion":"2.0",
|
||||||
|
"type":1,
|
||||||
|
}
|
37
shaders/sh_tile_rule_select/sh_tile_rule_select.fsh
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
varying vec2 v_vTexcoord;
|
||||||
|
varying vec4 v_vColour;
|
||||||
|
|
||||||
|
uniform vec2 dimension;
|
||||||
|
uniform int range;
|
||||||
|
uniform float selection[64];
|
||||||
|
uniform float selectionGroup[640];
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
vec2 tx = 1. / dimension;
|
||||||
|
vec4 base = texture2D( gm_BaseTexture, v_vTexcoord );
|
||||||
|
float bs = base.r - 1.;
|
||||||
|
gl_FragColor = vec4(0.);
|
||||||
|
|
||||||
|
if(bs == -1.) return;
|
||||||
|
|
||||||
|
int _r = range * 2 + 1;
|
||||||
|
for(int i = 0; i < _r; i++)
|
||||||
|
for(int j = 0; j < _r; j++) {
|
||||||
|
float selInd = selection[i * _r + j];
|
||||||
|
if(selInd < 10000.) continue;
|
||||||
|
|
||||||
|
int _arr = int(selInd - 10000.);
|
||||||
|
int _len = int(selectionGroup[_arr * 64]);
|
||||||
|
|
||||||
|
for(int k = 0; k < _len; k++) {
|
||||||
|
float _selInd = selectionGroup[_arr * 64 + 1 + k];
|
||||||
|
if(_selInd == -1.) continue;
|
||||||
|
|
||||||
|
if(bs == _selInd) {
|
||||||
|
gl_FragColor = vec4(selInd, 0., 0., 1.);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
19
shaders/sh_tile_rule_select/sh_tile_rule_select.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_tile_rule_select/sh_tile_rule_select.yy
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"$GMShader":"",
|
||||||
|
"%Name":"sh_tile_rule_select",
|
||||||
|
"name":"sh_tile_rule_select",
|
||||||
|
"parent":{
|
||||||
|
"name":"shaders",
|
||||||
|
"path":"folders/nodes/data/tiler/shaders.yy",
|
||||||
|
},
|
||||||
|
"resourceType":"GMShader",
|
||||||
|
"resourceVersion":"2.0",
|
||||||
|
"type":1,
|
||||||
|
}
|
|
@ -15,6 +15,7 @@ uniform int bitmaskType;
|
||||||
uniform int indexes[1024];
|
uniform int indexes[1024];
|
||||||
uniform int indexSize;
|
uniform int indexSize;
|
||||||
uniform int erase;
|
uniform int erase;
|
||||||
|
uniform int indexMapper48[64];
|
||||||
|
|
||||||
vec2 tx = 1. / dimension;
|
vec2 tx = 1. / dimension;
|
||||||
|
|
||||||
|
@ -79,6 +80,61 @@ void main() {
|
||||||
if(_1(i1) && _1(i3) && _1(i5) && _0(i7)) index = 7;
|
if(_1(i1) && _1(i3) && _1(i5) && _0(i7)) index = 7;
|
||||||
|
|
||||||
} else if(bitmaskType == 1) {
|
} else if(bitmaskType == 1) {
|
||||||
|
index = 12;
|
||||||
|
|
||||||
|
if(_A(i0) && _0(i1) && _A(i2) &&
|
||||||
|
_1(i3) && _1(i5) &&
|
||||||
|
_A(i6) && _1(i7) && _A(i8)) index = 2;
|
||||||
|
|
||||||
|
if(_A(i0) && _1(i1) && _A(i2) &&
|
||||||
|
_0(i3) && _1(i5) &&
|
||||||
|
_A(i6) && _1(i7) && _A(i8)) index = 10;
|
||||||
|
|
||||||
|
if(_A(i0) && _1(i1) && _A(i2) &&
|
||||||
|
_1(i3) && _0(i5) &&
|
||||||
|
_A(i6) && _1(i7) && _A(i8)) index = 14;
|
||||||
|
|
||||||
|
if(_A(i0) && _1(i1) && _A(i2) &&
|
||||||
|
_1(i3) && _1(i5) &&
|
||||||
|
_A(i6) && _0(i7) && _A(i8)) index = 22;
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
if(_A(i0) && _0(i1) && _A(i2) &&
|
||||||
|
_0(i3) && _1(i5) &&
|
||||||
|
_A(i6) && _1(i7) && _A(i8)) index = 1;
|
||||||
|
|
||||||
|
if(_A(i0) && _0(i1) && _A(i2) &&
|
||||||
|
_1(i3) && _0(i5) &&
|
||||||
|
_A(i6) && _1(i7) && _A(i8)) index = 3;
|
||||||
|
|
||||||
|
if(_A(i0) && _1(i1) && _A(i2) &&
|
||||||
|
_0(i3) && _1(i5) &&
|
||||||
|
_A(i6) && _0(i7) && _A(i8)) index = 21;
|
||||||
|
|
||||||
|
if(_A(i0) && _1(i1) && _A(i2) &&
|
||||||
|
_1(i3) && _0(i5) &&
|
||||||
|
_A(i6) && _0(i7) && _A(i8)) index = 23;
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
if(_0(i0) && _1(i1) && _A(i2) &&
|
||||||
|
_1(i3) && _1(i5) &&
|
||||||
|
_A(i6) && _1(i7) && _A(i8)) index = 6;
|
||||||
|
|
||||||
|
if(_A(i0) && _1(i1) && _0(i2) &&
|
||||||
|
_1(i3) && _1(i5) &&
|
||||||
|
_A(i6) && _1(i7) && _A(i8)) index = 8;
|
||||||
|
|
||||||
|
if(_A(i0) && _1(i1) && _A(i2) &&
|
||||||
|
_1(i3) && _1(i5) &&
|
||||||
|
_0(i6) && _1(i7) && _A(i8)) index = 16;
|
||||||
|
|
||||||
|
if(_A(i0) && _1(i1) && _A(i2) &&
|
||||||
|
_1(i3) && _1(i5) &&
|
||||||
|
_A(i6) && _1(i7) && _0(i8)) index = 18;
|
||||||
|
|
||||||
|
} else if(bitmaskType == 2) {
|
||||||
index = 6;
|
index = 6;
|
||||||
|
|
||||||
if(_0(i1) && _0(i3) && _1(i5) && _1(i7)) index = 0;
|
if(_0(i1) && _0(i3) && _1(i5) && _1(i7)) index = 0;
|
||||||
|
@ -103,7 +159,7 @@ void main() {
|
||||||
if(_0(i0) && _0(i8)) index = 14;
|
if(_0(i0) && _0(i8)) index = 14;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if(bitmaskType == 2 || bitmaskType == 3) {
|
} else if(bitmaskType == 3 || bitmaskType == 4) {
|
||||||
index = 12;
|
index = 12;
|
||||||
|
|
||||||
if(_A(i0) && _0(i1) && _A(i2) &&
|
if(_A(i0) && _0(i1) && _A(i2) &&
|
||||||
|
@ -314,10 +370,7 @@ void main() {
|
||||||
_1(i3) && _1(i5) &&
|
_1(i3) && _1(i5) &&
|
||||||
_0(i6) && _1(i7) && _0(i8)) index = 52;
|
_0(i6) && _1(i7) && _0(i8)) index = 52;
|
||||||
|
|
||||||
if(bitmaskType == 2) {
|
if(bitmaskType == 2) index = indexMapper48[index];
|
||||||
if(index == 0) index == 0;
|
|
||||||
else if(index == 0) index == 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float res = float(indexes[index]);
|
float res = float(indexes[index]);
|
||||||
|
|
Before Width: | Height: | Size: 430 B After Width: | Height: | Size: 430 B |
Before Width: | Height: | Size: 430 B After Width: | Height: | Size: 430 B |
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"$GMSprite":"",
|
"$GMSprite":"",
|
||||||
"%Name":"s_autotile_11x5",
|
"%Name":"s_autoterrain_11x5",
|
||||||
"bboxMode":0,
|
"bboxMode":0,
|
||||||
"bbox_bottom":19,
|
"bbox_bottom":19,
|
||||||
"bbox_left":1,
|
"bbox_left":1,
|
||||||
|
@ -21,7 +21,7 @@
|
||||||
"layers":[
|
"layers":[
|
||||||
{"$GMImageLayer":"","%Name":"ebef9aaa-f543-4c23-9c83-7b884a011c18","blendMode":0,"displayName":"default","isLocked":false,"name":"ebef9aaa-f543-4c23-9c83-7b884a011c18","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
|
{"$GMImageLayer":"","%Name":"ebef9aaa-f543-4c23-9c83-7b884a011c18","blendMode":0,"displayName":"default","isLocked":false,"name":"ebef9aaa-f543-4c23-9c83-7b884a011c18","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
|
||||||
],
|
],
|
||||||
"name":"s_autotile_11x5",
|
"name":"s_autoterrain_11x5",
|
||||||
"nineSlice":null,
|
"nineSlice":null,
|
||||||
"origin":0,
|
"origin":0,
|
||||||
"parent":{
|
"parent":{
|
||||||
|
@ -33,7 +33,7 @@
|
||||||
"resourceVersion":"2.0",
|
"resourceVersion":"2.0",
|
||||||
"sequence":{
|
"sequence":{
|
||||||
"$GMSequence":"",
|
"$GMSequence":"",
|
||||||
"%Name":"s_autotile_11x5",
|
"%Name":"s_autoterrain_11x5",
|
||||||
"autoRecord":true,
|
"autoRecord":true,
|
||||||
"backdropHeight":768,
|
"backdropHeight":768,
|
||||||
"backdropImageOpacity":0.5,
|
"backdropImageOpacity":0.5,
|
||||||
|
@ -57,7 +57,7 @@
|
||||||
"resourceType":"KeyframeStore<MomentsEventKeyframe>",
|
"resourceType":"KeyframeStore<MomentsEventKeyframe>",
|
||||||
"resourceVersion":"2.0",
|
"resourceVersion":"2.0",
|
||||||
},
|
},
|
||||||
"name":"s_autotile_11x5",
|
"name":"s_autoterrain_11x5",
|
||||||
"playback":1,
|
"playback":1,
|
||||||
"playbackSpeed":30.0,
|
"playbackSpeed":30.0,
|
||||||
"playbackSpeedType":0,
|
"playbackSpeedType":0,
|
||||||
|
@ -69,7 +69,7 @@
|
||||||
"tracks":[
|
"tracks":[
|
||||||
{"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore<SpriteFrameKeyframe>":"","Keyframes":[
|
{"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore<SpriteFrameKeyframe>":"","Keyframes":[
|
||||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"01232f7d-baf1-431a-a423-87f5315b841e","path":"sprites/s_autotile_11x5/s_autotile_11x5.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"01232f7d-baf1-431a-a423-87f5315b841e","path":"sprites/s_autoterrain_11x5/s_autoterrain_11x5.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||||
},"Disabled":false,"id":"c2970cc7-3433-47a3-b228-86e7fc0ccfd3","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
},"Disabled":false,"id":"c2970cc7-3433-47a3-b228-86e7fc0ccfd3","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,},
|
],"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"2.0",},"modifiers":[],"name":"frames","resourceType":"GMSpriteFramesTrack","resourceVersion":"2.0","spriteId":null,"trackColour":0,"tracks":[],"traits":0,},
|
||||||
],
|
],
|
Before Width: | Height: | Size: 306 B After Width: | Height: | Size: 306 B |
Before Width: | Height: | Size: 306 B After Width: | Height: | Size: 306 B |
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"$GMSprite":"",
|
"$GMSprite":"",
|
||||||
"%Name":"s_autotile_3x3",
|
"%Name":"s_autoterrain_3x3",
|
||||||
"bboxMode":0,
|
"bboxMode":0,
|
||||||
"bbox_bottom":10,
|
"bbox_bottom":10,
|
||||||
"bbox_left":1,
|
"bbox_left":1,
|
||||||
|
@ -21,7 +21,7 @@
|
||||||
"layers":[
|
"layers":[
|
||||||
{"$GMImageLayer":"","%Name":"991afa55-558a-473d-a893-36b42e44b7d0","blendMode":0,"displayName":"default","isLocked":false,"name":"991afa55-558a-473d-a893-36b42e44b7d0","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
|
{"$GMImageLayer":"","%Name":"991afa55-558a-473d-a893-36b42e44b7d0","blendMode":0,"displayName":"default","isLocked":false,"name":"991afa55-558a-473d-a893-36b42e44b7d0","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
|
||||||
],
|
],
|
||||||
"name":"s_autotile_3x3",
|
"name":"s_autoterrain_3x3",
|
||||||
"nineSlice":null,
|
"nineSlice":null,
|
||||||
"origin":0,
|
"origin":0,
|
||||||
"parent":{
|
"parent":{
|
||||||
|
@ -33,7 +33,7 @@
|
||||||
"resourceVersion":"2.0",
|
"resourceVersion":"2.0",
|
||||||
"sequence":{
|
"sequence":{
|
||||||
"$GMSequence":"",
|
"$GMSequence":"",
|
||||||
"%Name":"s_autotile_3x3",
|
"%Name":"s_autoterrain_3x3",
|
||||||
"autoRecord":true,
|
"autoRecord":true,
|
||||||
"backdropHeight":768,
|
"backdropHeight":768,
|
||||||
"backdropImageOpacity":0.5,
|
"backdropImageOpacity":0.5,
|
||||||
|
@ -57,7 +57,7 @@
|
||||||
"resourceType":"KeyframeStore<MomentsEventKeyframe>",
|
"resourceType":"KeyframeStore<MomentsEventKeyframe>",
|
||||||
"resourceVersion":"2.0",
|
"resourceVersion":"2.0",
|
||||||
},
|
},
|
||||||
"name":"s_autotile_3x3",
|
"name":"s_autoterrain_3x3",
|
||||||
"playback":1,
|
"playback":1,
|
||||||
"playbackSpeed":30.0,
|
"playbackSpeed":30.0,
|
||||||
"playbackSpeedType":0,
|
"playbackSpeedType":0,
|
||||||
|
@ -69,7 +69,7 @@
|
||||||
"tracks":[
|
"tracks":[
|
||||||
{"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore<SpriteFrameKeyframe>":"","Keyframes":[
|
{"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore<SpriteFrameKeyframe>":"","Keyframes":[
|
||||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"489436ec-6bcc-43d3-937c-b67a3080c21b","path":"sprites/s_autotile_3x3/s_autotile_3x3.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"489436ec-6bcc-43d3-937c-b67a3080c21b","path":"sprites/s_autoterrain_3x3/s_autoterrain_3x3.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||||
},"Disabled":false,"id":"a8508d65-3502-4f18-a8ee-8c1db13c8fa2","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
},"Disabled":false,"id":"a8508d65-3502-4f18-a8ee-8c1db13c8fa2","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,},
|
],"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"2.0",},"modifiers":[],"name":"frames","resourceType":"GMSpriteFramesTrack","resourceVersion":"2.0","spriteId":null,"trackColour":0,"tracks":[],"traits":0,},
|
||||||
],
|
],
|
Before Width: | Height: | Size: 335 B After Width: | Height: | Size: 335 B |
Before Width: | Height: | Size: 335 B After Width: | Height: | Size: 335 B |
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"$GMSprite":"",
|
"$GMSprite":"",
|
||||||
"%Name":"s_autotile_5x3",
|
"%Name":"s_autoterrain_5x3",
|
||||||
"bboxMode":0,
|
"bboxMode":0,
|
||||||
"bbox_bottom":11,
|
"bbox_bottom":11,
|
||||||
"bbox_left":1,
|
"bbox_left":1,
|
||||||
|
@ -21,7 +21,7 @@
|
||||||
"layers":[
|
"layers":[
|
||||||
{"$GMImageLayer":"","%Name":"9fb628f1-89bb-421e-86a4-4569f01ce93e","blendMode":0,"displayName":"default","isLocked":false,"name":"9fb628f1-89bb-421e-86a4-4569f01ce93e","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
|
{"$GMImageLayer":"","%Name":"9fb628f1-89bb-421e-86a4-4569f01ce93e","blendMode":0,"displayName":"default","isLocked":false,"name":"9fb628f1-89bb-421e-86a4-4569f01ce93e","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
|
||||||
],
|
],
|
||||||
"name":"s_autotile_5x3",
|
"name":"s_autoterrain_5x3",
|
||||||
"nineSlice":null,
|
"nineSlice":null,
|
||||||
"origin":0,
|
"origin":0,
|
||||||
"parent":{
|
"parent":{
|
||||||
|
@ -33,7 +33,7 @@
|
||||||
"resourceVersion":"2.0",
|
"resourceVersion":"2.0",
|
||||||
"sequence":{
|
"sequence":{
|
||||||
"$GMSequence":"",
|
"$GMSequence":"",
|
||||||
"%Name":"s_autotile_5x3",
|
"%Name":"s_autoterrain_5x3",
|
||||||
"autoRecord":true,
|
"autoRecord":true,
|
||||||
"backdropHeight":768,
|
"backdropHeight":768,
|
||||||
"backdropImageOpacity":0.5,
|
"backdropImageOpacity":0.5,
|
||||||
|
@ -57,7 +57,7 @@
|
||||||
"resourceType":"KeyframeStore<MomentsEventKeyframe>",
|
"resourceType":"KeyframeStore<MomentsEventKeyframe>",
|
||||||
"resourceVersion":"2.0",
|
"resourceVersion":"2.0",
|
||||||
},
|
},
|
||||||
"name":"s_autotile_5x3",
|
"name":"s_autoterrain_5x3",
|
||||||
"playback":1,
|
"playback":1,
|
||||||
"playbackSpeed":30.0,
|
"playbackSpeed":30.0,
|
||||||
"playbackSpeedType":0,
|
"playbackSpeedType":0,
|
||||||
|
@ -69,7 +69,7 @@
|
||||||
"tracks":[
|
"tracks":[
|
||||||
{"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore<SpriteFrameKeyframe>":"","Keyframes":[
|
{"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore<SpriteFrameKeyframe>":"","Keyframes":[
|
||||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"e3f83286-9b7e-4bd4-b2ea-c08183709b23","path":"sprites/s_autotile_5x3/s_autotile_5x3.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"e3f83286-9b7e-4bd4-b2ea-c08183709b23","path":"sprites/s_autoterrain_5x3/s_autoterrain_5x3.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||||
},"Disabled":false,"id":"36ea370b-9cec-43d4-8aa3-92b69e692782","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
},"Disabled":false,"id":"36ea370b-9cec-43d4-8aa3-92b69e692782","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,},
|
],"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"2.0",},"modifiers":[],"name":"frames","resourceType":"GMSpriteFramesTrack","resourceVersion":"2.0","spriteId":null,"trackColour":0,"tracks":[],"traits":0,},
|
||||||
],
|
],
|
After Width: | Height: | Size: 324 B |
After Width: | Height: | Size: 324 B |
90
sprites/s_autoterrain_5x5/s_autoterrain_5x5.yy
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
{
|
||||||
|
"$GMSprite":"",
|
||||||
|
"%Name":"s_autoterrain_5x5",
|
||||||
|
"bboxMode":0,
|
||||||
|
"bbox_bottom":17,
|
||||||
|
"bbox_left":2,
|
||||||
|
"bbox_right":17,
|
||||||
|
"bbox_top":2,
|
||||||
|
"collisionKind":1,
|
||||||
|
"collisionTolerance":0,
|
||||||
|
"DynamicTexturePage":false,
|
||||||
|
"edgeFiltering":false,
|
||||||
|
"For3D":false,
|
||||||
|
"frames":[
|
||||||
|
{"$GMSpriteFrame":"","%Name":"333c6f4d-d18f-465f-929f-92782d6684d5","name":"333c6f4d-d18f-465f-929f-92782d6684d5","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||||
|
],
|
||||||
|
"gridX":0,
|
||||||
|
"gridY":0,
|
||||||
|
"height":20,
|
||||||
|
"HTile":false,
|
||||||
|
"layers":[
|
||||||
|
{"$GMImageLayer":"","%Name":"cd0df110-6429-4bd1-a2db-58355c77f9a5","blendMode":0,"displayName":"default","isLocked":false,"name":"cd0df110-6429-4bd1-a2db-58355c77f9a5","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
|
||||||
|
],
|
||||||
|
"name":"s_autoterrain_5x5",
|
||||||
|
"nineSlice":null,
|
||||||
|
"origin":4,
|
||||||
|
"parent":{
|
||||||
|
"name":"sprites",
|
||||||
|
"path":"folders/nodes/data/tiler/sprites.yy",
|
||||||
|
},
|
||||||
|
"preMultiplyAlpha":false,
|
||||||
|
"resourceType":"GMSprite",
|
||||||
|
"resourceVersion":"2.0",
|
||||||
|
"sequence":{
|
||||||
|
"$GMSequence":"",
|
||||||
|
"%Name":"s_autoterrain_5x5",
|
||||||
|
"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_autoterrain_5x5",
|
||||||
|
"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":"333c6f4d-d18f-465f-929f-92782d6684d5","path":"sprites/s_autoterrain_5x5/s_autoterrain_5x5.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||||
|
},"Disabled":false,"id":"2b8f6d09-964d-44ce-8778-8ecbb11ddce8","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":10,
|
||||||
|
"yorigin":10,
|
||||||
|
},
|
||||||
|
"swatchColours":null,
|
||||||
|
"swfPrecision":0.5,
|
||||||
|
"textureGroupId":{
|
||||||
|
"name":"Default",
|
||||||
|
"path":"texturegroups/Default",
|
||||||
|
},
|
||||||
|
"type":0,
|
||||||
|
"VTile":false,
|
||||||
|
"width":20,
|
||||||
|
}
|
Before Width: | Height: | Size: 420 B After Width: | Height: | Size: 420 B |
Before Width: | Height: | Size: 420 B After Width: | Height: | Size: 420 B |
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"$GMSprite":"",
|
"$GMSprite":"",
|
||||||
"%Name":"s_autotile_8x6",
|
"%Name":"s_autoterrain_8x6",
|
||||||
"bboxMode":0,
|
"bboxMode":0,
|
||||||
"bbox_bottom":15,
|
"bbox_bottom":15,
|
||||||
"bbox_left":1,
|
"bbox_left":1,
|
||||||
|
@ -21,7 +21,7 @@
|
||||||
"layers":[
|
"layers":[
|
||||||
{"$GMImageLayer":"","%Name":"f68055ce-ac86-4b01-82e6-52237403ebaf","blendMode":0,"displayName":"default","isLocked":false,"name":"f68055ce-ac86-4b01-82e6-52237403ebaf","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
|
{"$GMImageLayer":"","%Name":"f68055ce-ac86-4b01-82e6-52237403ebaf","blendMode":0,"displayName":"default","isLocked":false,"name":"f68055ce-ac86-4b01-82e6-52237403ebaf","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
|
||||||
],
|
],
|
||||||
"name":"s_autotile_8x6",
|
"name":"s_autoterrain_8x6",
|
||||||
"nineSlice":null,
|
"nineSlice":null,
|
||||||
"origin":0,
|
"origin":0,
|
||||||
"parent":{
|
"parent":{
|
||||||
|
@ -33,7 +33,7 @@
|
||||||
"resourceVersion":"2.0",
|
"resourceVersion":"2.0",
|
||||||
"sequence":{
|
"sequence":{
|
||||||
"$GMSequence":"",
|
"$GMSequence":"",
|
||||||
"%Name":"s_autotile_8x6",
|
"%Name":"s_autoterrain_8x6",
|
||||||
"autoRecord":true,
|
"autoRecord":true,
|
||||||
"backdropHeight":768,
|
"backdropHeight":768,
|
||||||
"backdropImageOpacity":0.5,
|
"backdropImageOpacity":0.5,
|
||||||
|
@ -57,7 +57,7 @@
|
||||||
"resourceType":"KeyframeStore<MomentsEventKeyframe>",
|
"resourceType":"KeyframeStore<MomentsEventKeyframe>",
|
||||||
"resourceVersion":"2.0",
|
"resourceVersion":"2.0",
|
||||||
},
|
},
|
||||||
"name":"s_autotile_8x6",
|
"name":"s_autoterrain_8x6",
|
||||||
"playback":1,
|
"playback":1,
|
||||||
"playbackSpeed":30.0,
|
"playbackSpeed":30.0,
|
||||||
"playbackSpeedType":0,
|
"playbackSpeedType":0,
|
||||||
|
@ -69,7 +69,7 @@
|
||||||
"tracks":[
|
"tracks":[
|
||||||
{"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore<SpriteFrameKeyframe>":"","Keyframes":[
|
{"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore<SpriteFrameKeyframe>":"","Keyframes":[
|
||||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"b83bc046-0985-4dc1-8946-97dfc2b07310","path":"sprites/s_autotile_8x6/s_autotile_8x6.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"b83bc046-0985-4dc1-8946-97dfc2b07310","path":"sprites/s_autoterrain_8x6/s_autoterrain_8x6.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||||
},"Disabled":false,"id":"71c3750d-2b37-491b-82a1-e81aa5777085","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
},"Disabled":false,"id":"71c3750d-2b37-491b-82a1-e81aa5777085","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,},
|
],"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"2.0",},"modifiers":[],"name":"frames","resourceType":"GMSpriteFramesTrack","resourceVersion":"2.0","spriteId":null,"trackColour":0,"tracks":[],"traits":0,},
|
||||||
],
|
],
|
Before Width: | Height: | Size: 834 B |
BIN
sprites/s_node_tileset/0c493bee-f15b-452e-b22b-0eb4f4b1a6a9.png
Normal file
After Width: | Height: | Size: 835 B |
Before Width: | Height: | Size: 834 B |
After Width: | Height: | Size: 835 B |
|
@ -12,14 +12,14 @@
|
||||||
"edgeFiltering":false,
|
"edgeFiltering":false,
|
||||||
"For3D":false,
|
"For3D":false,
|
||||||
"frames":[
|
"frames":[
|
||||||
{"$GMSpriteFrame":"","%Name":"05965c8d-83ef-49f2-92ed-2c79e632f392","name":"05965c8d-83ef-49f2-92ed-2c79e632f392","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
{"$GMSpriteFrame":"","%Name":"0c493bee-f15b-452e-b22b-0eb4f4b1a6a9","name":"0c493bee-f15b-452e-b22b-0eb4f4b1a6a9","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||||
],
|
],
|
||||||
"gridX":0,
|
"gridX":0,
|
||||||
"gridY":0,
|
"gridY":0,
|
||||||
"height":64,
|
"height":64,
|
||||||
"HTile":false,
|
"HTile":false,
|
||||||
"layers":[
|
"layers":[
|
||||||
{"$GMImageLayer":"","%Name":"ec92eda4-1e09-4847-a92f-f90e1c4b090c","blendMode":0,"displayName":"default","isLocked":false,"name":"ec92eda4-1e09-4847-a92f-f90e1c4b090c","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
|
{"$GMImageLayer":"","%Name":"a478b705-fbbc-4b61-aab2-73d2ceb068dc","blendMode":0,"displayName":"default","isLocked":false,"name":"a478b705-fbbc-4b61-aab2-73d2ceb068dc","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
|
||||||
],
|
],
|
||||||
"name":"s_node_tileset",
|
"name":"s_node_tileset",
|
||||||
"nineSlice":null,
|
"nineSlice":null,
|
||||||
|
@ -69,8 +69,8 @@
|
||||||
"tracks":[
|
"tracks":[
|
||||||
{"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore<SpriteFrameKeyframe>":"","Keyframes":[
|
{"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore<SpriteFrameKeyframe>":"","Keyframes":[
|
||||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"05965c8d-83ef-49f2-92ed-2c79e632f392","path":"sprites/s_node_tileset/s_node_tileset.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"0c493bee-f15b-452e-b22b-0eb4f4b1a6a9","path":"sprites/s_node_tileset/s_node_tileset.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||||
},"Disabled":false,"id":"5cbd7933-8ded-481c-a560-2007a5e2e0de","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
},"Disabled":false,"id":"c4d7e3be-cadc-41a9-a3aa-5dada431e473","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,},
|
],"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"2.0",},"modifiers":[],"name":"frames","resourceType":"GMSpriteFramesTrack","resourceVersion":"2.0","spriteId":null,"trackColour":0,"tracks":[],"traits":0,},
|
||||||
],
|
],
|
||||||
"visibleRange":null,
|
"visibleRange":null,
|
||||||
|
|
After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB |
|
@ -12,14 +12,14 @@
|
||||||
"edgeFiltering":false,
|
"edgeFiltering":false,
|
||||||
"For3D":false,
|
"For3D":false,
|
||||||
"frames":[
|
"frames":[
|
||||||
{"$GMSpriteFrame":"","%Name":"c3b4ed40-48e3-4bd9-be74-cdb201d5ce07","name":"c3b4ed40-48e3-4bd9-be74-cdb201d5ce07","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
{"$GMSpriteFrame":"","%Name":"c19e60e4-752e-4d33-84d4-8cb8fd6d090e","name":"c19e60e4-752e-4d33-84d4-8cb8fd6d090e","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||||
],
|
],
|
||||||
"gridX":0,
|
"gridX":0,
|
||||||
"gridY":0,
|
"gridY":0,
|
||||||
"height":64,
|
"height":64,
|
||||||
"HTile":false,
|
"HTile":false,
|
||||||
"layers":[
|
"layers":[
|
||||||
{"$GMImageLayer":"","%Name":"17b46b13-d023-44d6-a82c-1baa780ada99","blendMode":0,"displayName":"default","isLocked":false,"name":"17b46b13-d023-44d6-a82c-1baa780ada99","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
|
{"$GMImageLayer":"","%Name":"3ebbef57-3950-4b2b-8f28-985405db67a8","blendMode":0,"displayName":"default","isLocked":false,"name":"3ebbef57-3950-4b2b-8f28-985405db67a8","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
|
||||||
],
|
],
|
||||||
"name":"s_node_tileset_drawer",
|
"name":"s_node_tileset_drawer",
|
||||||
"nineSlice":null,
|
"nineSlice":null,
|
||||||
|
@ -69,8 +69,8 @@
|
||||||
"tracks":[
|
"tracks":[
|
||||||
{"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore<SpriteFrameKeyframe>":"","Keyframes":[
|
{"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore<SpriteFrameKeyframe>":"","Keyframes":[
|
||||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"c3b4ed40-48e3-4bd9-be74-cdb201d5ce07","path":"sprites/s_node_tileset_drawer/s_node_tileset_drawer.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"c19e60e4-752e-4d33-84d4-8cb8fd6d090e","path":"sprites/s_node_tileset_drawer/s_node_tileset_drawer.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||||
},"Disabled":false,"id":"c2cfdd19-a390-4eeb-a59b-7f180a8285ef","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
},"Disabled":false,"id":"df124ed2-0439-43fb-9437-1f3ab99bbac3","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,},
|
],"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"2.0",},"modifiers":[],"name":"frames","resourceType":"GMSpriteFramesTrack","resourceVersion":"2.0","spriteId":null,"trackColour":0,"tracks":[],"traits":0,},
|
||||||
],
|
],
|
||||||
"visibleRange":null,
|
"visibleRange":null,
|
||||||
|
|
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.4 KiB |
90
sprites/s_node_tileset_export/s_node_tileset_export.yy
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
{
|
||||||
|
"$GMSprite":"",
|
||||||
|
"%Name":"s_node_tileset_export",
|
||||||
|
"bboxMode":0,
|
||||||
|
"bbox_bottom":61,
|
||||||
|
"bbox_left":4,
|
||||||
|
"bbox_right":59,
|
||||||
|
"bbox_top":2,
|
||||||
|
"collisionKind":1,
|
||||||
|
"collisionTolerance":0,
|
||||||
|
"DynamicTexturePage":false,
|
||||||
|
"edgeFiltering":false,
|
||||||
|
"For3D":false,
|
||||||
|
"frames":[
|
||||||
|
{"$GMSpriteFrame":"","%Name":"41ad1ef4-812c-4234-873f-50652a2e18cb","name":"41ad1ef4-812c-4234-873f-50652a2e18cb","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||||
|
],
|
||||||
|
"gridX":0,
|
||||||
|
"gridY":0,
|
||||||
|
"height":64,
|
||||||
|
"HTile":false,
|
||||||
|
"layers":[
|
||||||
|
{"$GMImageLayer":"","%Name":"fc03369a-caa3-4b07-9134-abc0293d62e6","blendMode":0,"displayName":"default","isLocked":false,"name":"fc03369a-caa3-4b07-9134-abc0293d62e6","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
|
||||||
|
],
|
||||||
|
"name":"s_node_tileset_export",
|
||||||
|
"nineSlice":null,
|
||||||
|
"origin":4,
|
||||||
|
"parent":{
|
||||||
|
"name":"IO",
|
||||||
|
"path":"folders/nodes/icons/IO.yy",
|
||||||
|
},
|
||||||
|
"preMultiplyAlpha":false,
|
||||||
|
"resourceType":"GMSprite",
|
||||||
|
"resourceVersion":"2.0",
|
||||||
|
"sequence":{
|
||||||
|
"$GMSequence":"",
|
||||||
|
"%Name":"s_node_tileset_export",
|
||||||
|
"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_tileset_export",
|
||||||
|
"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":"41ad1ef4-812c-4234-873f-50652a2e18cb","path":"sprites/s_node_tileset_export/s_node_tileset_export.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||||
|
},"Disabled":false,"id":"7a774c57-8fb5-4744-bf39-c20e7e9a1ac7","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,
|
||||||
|
}
|