From 026a34203dc759ad1a9c7eabcb646b3439ce0525 Mon Sep 17 00:00:00 2001 From: James Hartley Date: Mon, 11 Sep 2023 09:42:15 -0700 Subject: [PATCH 1/3] Started enhancing Godot 4 export --- .gitignore | 28 +++++++++++-------- .../resources/static/exporters/GodotAtlas.mst | 4 +-- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/.gitignore b/.gitignore index 6528e159..10079db6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,16 @@ -.idea/* -.vscode/* - -node_modules/* - -package-lock.json - -.DS_Store -/index.js -/index.js.map -/dist/app -/electron/www +.idea/* +.vscode/* + +node_modules/* + +dist/* + +package-lock.json + +yarn.lock + +.DS_Store +/index.js +/index.js.map +/dist/app +/electron/www diff --git a/src/client/resources/static/exporters/GodotAtlas.mst b/src/client/resources/static/exporters/GodotAtlas.mst index 890dc8e8..ab8615df 100644 --- a/src/client/resources/static/exporters/GodotAtlas.mst +++ b/src/client/resources/static/exporters/GodotAtlas.mst @@ -19,8 +19,8 @@ "margin": { "x": 0, "y": 0, - "w": 0, - "h": 0 + "w": {{32 - frame.w}}, + "h": {{32 - frame.h}} } }{{^last}},{{/last}} {{/rects}} From 9e254220ce127482916023818adde6e387b6ead6 Mon Sep 17 00:00:00 2001 From: James Hartley Date: Mon, 11 Sep 2023 10:58:11 -0700 Subject: [PATCH 2/3] Added support for margins in Godot Atlas export --- src/client/exporters/index.js | 8 +++++++- src/client/exporters/list.json | 6 +++--- src/client/resources/static/exporters/GodotAtlas.mst | 8 ++++---- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/client/exporters/index.js b/src/client/exporters/index.js index 199e45c6..5719621a 100644 --- a/src/client/exporters/index.js +++ b/src/client/exporters/index.js @@ -81,9 +81,10 @@ function prepareData(data, options) { name = name.split("/").pop(); } - let frame = {x: item.frame.x, y: item.frame.y, w: item.frame.w, h: item.frame.h, hw: item.frame.w/2, hh: item.frame.h/2}; + let frame = {x: item.frame.x, y: item.frame.y, w: item.frame.w, h: item.frame.h, hw: item.frame.w/2, hh: item.frame.h/2, mx: 0, my:0, mw:item.spriteSourceSize.w-item.frame.w, mh:item.spriteSourceSize.h-item.frame.h}; let spriteSourceSize = {x: item.spriteSourceSize.x, y: item.spriteSourceSize.y, w: item.spriteSourceSize.w, h: item.spriteSourceSize.h}; let sourceSize = {w: item.sourceSize.w, h: item.sourceSize.h}; + let margin = {x: (sourceSize.w - spriteSourceSize.w)/2, y: (sourceSize.h - spriteSourceSize.h)/2, h: sourceSize.h - spriteSourceSize.h, w: sourceSize.w - spriteSourceSize.w} let trimmed = item.trimmed; @@ -102,6 +103,10 @@ function prepareData(data, options) { frame.h *= opt.scale; frame.hw *= opt.scale; frame.hh *= opt.scale; + margin.x *= opt.scale; + margin.y *= opt.scale; + margin.w *= opt.scale; + margin.h *= opt.scale; spriteSourceSize.x *= opt.scale; spriteSourceSize.y *= opt.scale; @@ -117,6 +122,7 @@ function prepareData(data, options) { frame: frame, spriteSourceSize: spriteSourceSize, sourceSize: sourceSize, + margin: margin, rotated: item.rotated, trimmed: trimmed }); diff --git a/src/client/exporters/list.json b/src/client/exporters/list.json index 6fb28a7d..255b092f 100644 --- a/src/client/exporters/list.json +++ b/src/client/exporters/list.json @@ -51,15 +51,15 @@ "type": "Godot (atlas)", "description": "Godot Atlas format", "allowTrim": true, - "allowRotation": true, + "allowRotation": false, "template": "GodotAtlas.mst", "fileExt": "tpsheet" }, { "type": "Godot (tileset)", - "description": "Godot Tileset format", + "description": "Godot Tileset format (3.x only)", "allowTrim": true, - "allowRotation": true, + "allowRotation": false, "template": "GodotTileset.mst", "fileExt": "tpset" }, diff --git a/src/client/resources/static/exporters/GodotAtlas.mst b/src/client/resources/static/exporters/GodotAtlas.mst index ab8615df..05f97ca5 100644 --- a/src/client/resources/static/exporters/GodotAtlas.mst +++ b/src/client/resources/static/exporters/GodotAtlas.mst @@ -17,10 +17,10 @@ "h": {{frame.h}} }, "margin": { - "x": 0, - "y": 0, - "w": {{32 - frame.w}}, - "h": {{32 - frame.h}} + "x": {{margin.x}}, + "y": {{margin.y}}, + "w": {{margin.w}}, + "h": {{margin.h}} } }{{^last}},{{/last}} {{/rects}} From 028f4b163dd5953fd45fe77dbe1860d4a310887a Mon Sep 17 00:00:00 2001 From: James Hartley Date: Mon, 11 Sep 2023 14:39:43 -0700 Subject: [PATCH 3/3] Removed leftover debug code --- src/client/exporters/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/client/exporters/index.js b/src/client/exporters/index.js index 5719621a..8d82499a 100644 --- a/src/client/exporters/index.js +++ b/src/client/exporters/index.js @@ -81,9 +81,11 @@ function prepareData(data, options) { name = name.split("/").pop(); } - let frame = {x: item.frame.x, y: item.frame.y, w: item.frame.w, h: item.frame.h, hw: item.frame.w/2, hh: item.frame.h/2, mx: 0, my:0, mw:item.spriteSourceSize.w-item.frame.w, mh:item.spriteSourceSize.h-item.frame.h}; + let frame = {x: item.frame.x, y: item.frame.y, w: item.frame.w, h: item.frame.h, hw: item.frame.w/2, hh: item.frame.h/2}; let spriteSourceSize = {x: item.spriteSourceSize.x, y: item.spriteSourceSize.y, w: item.spriteSourceSize.w, h: item.spriteSourceSize.h}; let sourceSize = {w: item.sourceSize.w, h: item.sourceSize.h}; + + //Used when importing to Godot Atlas to retain the original sprite size let margin = {x: (sourceSize.w - spriteSourceSize.w)/2, y: (sourceSize.h - spriteSourceSize.h)/2, h: sourceSize.h - spriteSourceSize.h, w: sourceSize.w - spriteSourceSize.w} let trimmed = item.trimmed;