Files
2026-09-13 09:43:24 +03:00

98 lines
15 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.AutoAtlasImporter = void 0;
const base_importer_1 = require("./base-importer");
const texture_importer_1 = require("./texture-importer");
class AutoAtlasImporter extends base_importer_1.BaseAssetImporter {
constructor() {
super(...arguments);
this.name = 'auto-atlas';
this.textureImporter = new texture_importer_1.TextureImporter();
}
async setProperty(assetInfo, path, value) {
const meta = await Editor.Message.request('asset-db', 'query-asset-meta', assetInfo.uuid);
if (!meta || !meta.userData)
return false;
const userData = meta.userData;
let handled = false;
if (path.includes('.')) {
const parts = path.split('.');
let current = userData;
for (let i = 0; i < parts.length - 1; i++) {
if (!current[parts[i]])
return false;
current = current[parts[i]];
}
if (current) {
current[parts[parts.length - 1]] = value;
handled = true;
}
}
else {
userData[path] = value;
handled = true;
}
if (handled) {
await Editor.Message.request('asset-db', 'save-asset-meta', assetInfo.uuid, JSON.stringify(meta));
return true;
}
return false;
}
async getProperties(assetInfo) {
const assetMeta = await Editor.Message.request('asset-db', 'query-asset-meta', assetInfo.uuid);
if (!assetMeta) {
throw new Error(`Asset meta not found for ${assetInfo.uuid}`);
}
const userData = assetMeta.userData;
if (!userData) {
throw new Error(`UserData not found for asset ${assetInfo.uuid}`);
}
return this.parseUserData(userData);
}
parseUserData(userData) {
const propertyContainer = {};
// Atlas Settings
propertyContainer.maxWidth = { value: userData.maxWidth, type: 'Integer', displayName: 'Max Width' };
propertyContainer.maxHeight = { value: userData.maxHeight, type: 'Integer', displayName: 'Max Height' };
propertyContainer.padding = { value: userData.padding, type: 'Integer', displayName: 'Padding' };
propertyContainer.allowRotation = { value: !!userData.allowRotation, type: 'Boolean', displayName: 'Allow Rotation' };
propertyContainer.forceSquared = { value: !!userData.forceSquared, type: 'Boolean', displayName: 'Force Squared' };
propertyContainer.powerOfTwo = { value: !!userData.powerOfTwo, type: 'Boolean', displayName: 'Power of Two' };
propertyContainer.algorithm = {
value: userData.algorithm,
type: 'Enum',
enumList: [
{ name: 'MaxRects', value: 'MaxRects' },
{ name: 'Basic', value: 'Basic' }
],
displayName: 'Algorithm'
};
propertyContainer.format = {
value: userData.format,
type: 'Enum',
enumList: [
{ name: 'png', value: 'png' },
{ name: 'jpg', value: 'jpg' },
{ name: 'webp', value: 'webp' }
],
displayName: 'Format'
};
propertyContainer.quality = {
value: userData.quality,
type: 'Number',
displayName: 'Quality',
visible: userData.format === 'jpg'
};
propertyContainer.contourBleed = { value: !!userData.contourBleed, type: 'Boolean', displayName: 'Contour Bleed' };
propertyContainer.paddingBleed = { value: !!userData.paddingBleed, type: 'Boolean', displayName: 'Padding Bleed' };
propertyContainer.filterUnused = { value: !!userData.filterUnused, type: 'Boolean', displayName: 'Filter Unused Resources' };
// Texture Settings
if (userData.textureSetting) {
const textureProps = this.textureImporter.parseUserData(userData.textureSetting);
Object.assign(propertyContainer, textureProps);
}
return propertyContainer;
}
}
exports.AutoAtlasImporter = AutoAtlasImporter;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1hdGxhcy1pbXBvcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NvdXJjZS91dGNwL3V0aWxzL2Fzc2V0LWltcG9ydGVycy9hdXRvLWF0bGFzLWltcG9ydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUFvRDtBQUVwRCx5REFBcUQ7QUFHckQsTUFBYSxpQkFBa0IsU0FBUSxpQ0FBaUI7SUFBeEQ7O1FBQ0ksU0FBSSxHQUFHLFlBQVksQ0FBQztRQUNaLG9CQUFlLEdBQUcsSUFBSSxrQ0FBZSxFQUFFLENBQUM7SUFrR3BELENBQUM7SUFoR0csS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFxQixFQUFFLElBQVksRUFBRSxLQUFVO1FBQzdELE1BQU0sSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLGtCQUFrQixFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxRixJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUUxQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztRQUVwQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQztZQUN2QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQUUsT0FBTyxLQUFL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RUFBRSxXQUFXLEVBQUUseUJBQXlCLEVBQUUsQ0FBQztRQUU3SCxtQkFBbUI7UUFDbkIsSUFBSSxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ2pGLE1BQU0sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUVELE9BQU8saUJBQWlCLENBQUM7SUFDN0IsQ0FBQztDQUNKO0FBcEdELDhDQW9HQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VBc3NldEltcG9ydGVyIH0gZnJvbSAnLi9iYXNlLWltcG9ydGVyJztcbmltcG9ydCB7IElBc3NldEluZm8gfSBmcm9tICdAY29jb3MvY3JlYXRvci10eXBlcy9lZGl0b3IvcGFja2FnZXMvYXNzZXQtZGIvQHR5cGVzL3B1YmxpYyc7XG5pbXBvcnQgeyBUZXh0dXJlSW1wb3J0ZXIgfSBmcm9tICcuL3RleHR1cmUtaW1wb3J0ZXInO1xuaW1wb3J0IHsgSVByb3BlcnR5LCBJUHJvcGVydHlWYWx1ZVR5cGUgfSBmcm9tICdAY29jb3MvY3JlYXRvci10eXBlcy9lZGl0b3IvcGFja2FnZXMvc2NlbmUvQHR5cGVzL3B1YmxpYyc7XG5cbmV4cG9ydCBjbGFzcyBBdXRvQXRsYXNJbXBvcnRlciBleHRlbmRzIEJhc2VBc3NldEltcG9ydGVyIHtcbiAgICBuYW1lID0gJ2F1dG8tYXRsYXMnO1xuICAgIHByaXZhdGUgdGV4dHVyZUltcG9ydGVyID0gbmV3IFRleHR1cmVJbXBvcnRlcigpO1xuXG4gICAgYXN5bmMgc2V0UHJvcGVydHkoYXNzZXRJbmZvOiBJQXNzZXRJbmZvLCBwYXRoOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgY29uc3QgbWV0YSA9IGF3YWl0IEVkaXRvci5NZXNzYWdlLnJlcXVlc3QoJ2Fzc2V0LWRiJywgJ3F1ZXJ5LWFzc2V0LW1ldGEnLCBhc3NldEluZm8udXVpZCk7XG4gICAgICAgIGlmICghbWV0YSB8fCAhbWV0YS51c2VyRGF0YSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBcbiAgICAgICAgY29uc3QgdXNlckRhdGEgPSBtZXRhLnVzZXJEYXRhO1xuICAgICAgICBsZXQgaGFuZGxlZCA9IGZhbHNlO1xuICAgICAgICBcbiAgICAgICAgaWYgKHBhdGguaW5jbHVkZXMoJy4nKSkge1xuICAgICAgICAgICAgY29uc3QgcGFydHMgPSBwYXRoLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICBsZXQgY3VycmVudCA9IHVzZXJEYXRhO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRbcGFydHNbaV1dKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnRbcGFydHNbaV1dO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50W3BhcnRzW3BhcnRzLmxlbmd0aCAtIDFdXSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdXNlckRhdGFbcGF0aF0gPSB2YWx1ZTtcbiAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoaGFuZGxlZCkge1xuICAgICAgICAgICAgYXdhaXQgRWRpdG9yLk1lc3NhZ2UucmVxdWVzdCgnYXNzZXQtZGInLCAnc2F2ZS1hc3NldC1tZXRhJywgYXNzZXRJbmZvLnV1aWQsIEpTT04uc3RyaW5naWZ5KG1ldGEpKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRQcm9wZXJ0aWVzKGFzc2V0SW5mbzogSUFzc2V0SW5mbyk6IFByb21pc2U8eyBba2V5OiBzdHJpbmddOiBJUHJvcGVydHlWYWx1ZVR5cGUgfT4ge1xuICAgICAgICBjb25zdCBhc3NldE1ldGEgPSBhd2FpdCBFZGl0b3IuTWVzc2FnZS5yZXF1ZXN0KCdhc3NldC1kYicsICdxdWVyeS1hc3NldC1tZXRhJywgYXNzZXRJbmZvLnV1aWQpO1xuICAgICAgICBcbiAgICAgICAgaWYgKCFhc3NldE1ldGEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXQgbWV0YSBub3QgZm91bmQgZm9yICR7YXNzZXRJbmZvLnV1aWR9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1c2VyRGF0YSA9IGFzc2V0TWV0YS51c2VyRGF0YTtcbiAgICAgICAgaWYgKCF1c2VyRGF0YSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVc2VyRGF0YSBub3QgZm91bmQgZm9yIGFzc2V0ICR7YXNzZXRJbmZvLnV1aWR9YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZVVzZXJEYXRhKHVzZXJEYXRhKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlVXNlckRhdGEodXNlckRhdGE6IGFueSk6IHsgW2tleTogc3RyaW5nXTogSVByb3BlcnR5IH0ge1xuICAgICAgICBjb25zdCBwcm9wZXJ0eUNvbnRhaW5lcjogeyBba2V5OiBzdHJpbmddOiBJUHJvcGVydHkgfSA9IHt9O1xuXG4gICAgICAgIC8vIEF0bGFzIFNldHRpbmdzXG4gICAgICAgIHByb3BlcnR5Q29udGFpbmVyLm1heFdpZHRoID0geyB2YWx1ZTogdXNlckRhdGEubWF4V2lkdGgsIHR5cGU6ICdJbnRlZ2VyJywgZGlzcGxheU5hbWU6ICdNYXggV2lkdGgnIH07XG4gICAgICAgIHByb3BlcnR5Q29udGFpbmVyLm1heEhlaWdodCA9IHsgdmFsdWU6IHVzZXJEYXRhLm1heEhlaWdodCwgdHlwZTogJ0ludGVnZXInLCBkaXNwbGF5TmFtZTogJ01heCBIZWlnaHQnIH07XG4gICAgICAgIHByb3BlcnR5Q29udGFpbmVyLnBhZGRpbmcgPSB7IHZhbHVlOiB1c2VyRGF0YS5wYWRkaW5nLCB0eXBlOiAnSW50ZWdlcicsIGRpc3BsYXlOYW1lOiAnUGFkZGluZycgfTtcbiAgICAgICAgcHJvcGVydHlDb250YWluZXIuYWxsb3dSb3RhdGlvbiA9IHsgdmFsdWU6ICEhdXNlckRhdGEuYWxsb3dSb3RhdGlvbiwgdHlwZTogJ0Jvb2xlYW4nLCBkaXNwbGF5TmFtZTogJ0FsbG93IFJvdGF0aW9uJyB9O1xuICAgICAgICBwcm9wZXJ0eUNvbnRhaW5lci5mb3JjZVNxdWFyZWQgPSB7IHZhbHVlOiAhIXVzZXJEYXRhLmZvcmNlU3F1YXJlZCwgdHlwZTogJ0Jvb2xlYW4nLCBkaXNwbGF5TmFtZTogJ0ZvcmNlIFNxdWFyZWQnIH07XG4gICAgICAgIHByb3BlcnR5Q29udGFpbmVyLnBvd2VyT2ZUd28gPSB7IHZhbHVlOiAhIXVzZXJEYXRhLnBvd2VyT2ZUd28sIHR5cGU6ICdCb29sZWFuJywgZGlzcGxheU5hbWU6ICdQb3dlciBvZiBUd28nIH07XG4gICAgICAgIFxuICAgICAgICBwcm9wZXJ0eUNvbnRhaW5lci5hbGdvcml0aG0gPSB7IFxuICAgICAgICAgICAgdmFsdWU6IHVzZXJEYXRhLmFsZ29yaXRobSwgXG4gICAgICAgICAgICB0eXBlOiAnRW51bScsIFxuICAgICAgICAgICAgZW51bUxpc3Q6IFtcbiAgICAgICAgICAgICAgICB7IG5hbWU6ICdNYXhSZWN0cycsIHZhbHVlOiAnTWF4UmVjdHMnIH0sXG4gICAgICAgICAgICAgICAgeyBuYW1lOiAnQmFzaWMnLCB2YWx1ZTogJ0Jhc2ljJyB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgZGlzcGxheU5hbWU6ICdBbGdvcml0aG0nIFxuICAgICAgICB9O1xuICAgICAgICBcbiAgICAgICAgcHJvcGVydHlDb250YWluZXIuZm9ybWF0ID0geyBcbiAgICAgICAgICAgIHZhbHVlOiB1c2VyRGF0YS5mb3JtYXQsIFxuICAgICAgICAgICAgdHlwZTogJ0VudW0nLCBcbiAgICAgICAgICAgIGVudW1MaXN0OiBbXG4gICAgICAgICAgICAgICAgeyBuYW1lOiAncG5nJywgdmFsdWU6ICdwbmcnIH0sXG4gICAgICAgICAgICAgICAgeyBuYW1lOiAnanBnJywgdmFsdWU6ICdqcGcnIH0sXG4gICAgICAgICAgICAgICAgeyBuYW1lOiAnd2VicCcsIHZhbHVlOiAnd2VicCcgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAnRm9ybWF0JyBcbiAgICAgICAgfTtcblxuICAgICAgICBwcm9wZXJ0eUNvbnRhaW5lci5xdWFsaXR5ID0geyBcbiAgICAgICAgICAgIHZhbHVlOiB1c2VyRGF0YS5xdWFsaXR5LCBcbiAgICAgICAgICAgIHR5cGU6ICdOdW1iZXInLCBcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAnUXVhbGl0eScsXG4gICAgICAgICAgICB2aXNpYmxlOiB1c2VyRGF0YS5mb3JtYXQgPT09ICdqcGcnXG4gICAgICAgIH07XG5cbiAgICAgICAgcHJvcGVydHlDb250YWluZXIuY29udG91ckJsZWVkID0geyB2YWx1ZTogISF1c2VyRGF0YS5jb250b3VyQmxlZWQsIHR5cGU6ICdCb29sZWFuJywgZGlzcGxheU5hbWU6ICdDb250b3VyIEJsZWVkJyB9O1xuICAgICAgICBwcm9wZXJ0eUNvbnRhaW5lci5wYWRkaW5nQmxlZWQgPSB7IHZhbHVlOiAhIXVzZXJEYXRhLnBhZGRpbmdCbGVlZCwgdHlwZTogJ0Jvb2xlYW4nLCBkaXNwbGF5TmFtZTogJ1BhZGRpbmcgQmxlZWQnIH07XG4gICAgICAgIHByb3BlcnR5Q29udGFpbmVyLmZpbHRlclVudXNlZCA9IHsgdmFsdWU6ICEhdXNlckRhdGEuZmlsdGVyVW51c2VkLCB0eXBlOiAnQm9vbGVhbicsIGRpc3BsYXlOYW1lOiAnRmlsdGVyIFVudXNlZCBSZXNvdXJjZXMnIH07XG5cbiAgICAgICAgLy8gVGV4dHVyZSBTZXR0aW5nc1xuICAgICAgICBpZiAodXNlckRhdGEudGV4dHVyZVNldHRpbmcpIHtcbiAgICAgICAgICAgICBjb25zdCB0ZXh0dXJlUHJvcHMgPSB0aGlzLnRleHR1cmVJbXBvcnRlci5wYXJzZVVzZXJEYXRhKHVzZXJEYXRhLnRleHR1cmVTZXR0aW5nKTtcbiAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHByb3BlcnR5Q29udGFpbmVyLCB0ZXh0dXJlUHJvcHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHByb3BlcnR5Q29udGFpbmVyO1xuICAgIH1cbn1cbiJdfQ==