Files
fool-cardgame/extensions/cocos-code-mode/dist/utcp/utils/texture-utils.js
T
2026-09-13 09:43:24 +03:00

113 lines
16 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.TextureUtils = void 0;
class TextureUtils {
/**
* Applies synthetic texture properties (filterMode, wrapMode) to the user data.
* Returns true if the property was handled.
*/
static applyProperties(userData, path, value) {
if (path === 'filterMode') {
if (this.FilterModeMap[value]) {
Object.assign(userData, this.FilterModeMap[value]);
return true;
}
}
else if (path === 'wrapMode') {
if (this.WrapModeMap[value]) {
Object.assign(userData, this.WrapModeMap[value]);
return true;
}
}
return false;
}
/**
* Injects synthetic texture properties (filterMode, wrapMode) into the property container.
*/
static injectTextureProperties(userData, propertyContainer) {
// Filter Mode Logic
let filterMode = 'Advanced';
for (const [mode, settings] of Object.entries(this.FilterModeMap)) {
if (userData.minfilter === settings.minfilter &&
userData.magfilter === settings.magfilter &&
userData.mipfilter === settings.mipfilter) {
filterMode = mode;
break;
}
}
propertyContainer.filterMode = {
value: filterMode,
type: 'Enum',
enumList: [...Object.keys(this.FilterModeMap), 'Advanced'].map(k => ({ name: k, value: k })),
displayName: 'Filter Mode',
};
if (filterMode === 'Advanced') {
propertyContainer.minfilter = {
value: userData.minfilter,
type: 'Enum',
enumList: ['nearest', 'linear'].map(k => ({ name: k, value: k })),
displayName: 'Min Filter',
};
propertyContainer.magfilter = {
value: userData.magfilter,
type: 'Enum',
enumList: ['nearest', 'linear'].map(k => ({ name: k, value: k })),
displayName: 'Mag Filter',
};
propertyContainer.mipfilter = {
value: userData.mipfilter,
type: 'Enum',
enumList: ['none', 'nearest', 'linear'].map(k => ({ name: k, value: k })),
displayName: 'Mip Filter',
};
}
// Wrap Mode Logic
let wrapMode = 'Advanced';
for (const [mode, settings] of Object.entries(this.WrapModeMap)) {
if (userData.wrapModeS === settings.wrapModeS &&
userData.wrapModeT === settings.wrapModeT) {
wrapMode = mode;
break;
}
}
propertyContainer.wrapMode = {
value: wrapMode,
type: 'Enum',
enumList: [...Object.keys(this.WrapModeMap), 'Advanced'].map(k => ({ name: k, value: k })),
displayName: 'Wrap Mode',
};
if (wrapMode === 'Advanced') {
const wrapModes = ['repeat', 'clamp-to-edge', 'mirrored-repeat'].map(k => ({ name: k, value: k }));
propertyContainer.wrapModeS = {
value: userData.wrapModeS,
type: 'Enum',
enumList: wrapModes,
displayName: 'Wrap Mode S',
};
propertyContainer.wrapModeT = {
value: userData.wrapModeT,
type: 'Enum',
enumList: wrapModes,
displayName: 'Wrap Mode T',
};
}
propertyContainer.anisotropy = {
value: userData.anisotropy,
type: 'Number',
displayName: 'Anisotropy',
};
}
}
exports.TextureUtils = TextureUtils;
TextureUtils.FilterModeMap = {
'Nearest (None)': { minfilter: 'nearest', magfilter: 'nearest', mipfilter: 'none' },
'Bilinear': { minfilter: 'linear', magfilter: 'linear', mipfilter: 'none' },
'Bilinear with Mipmaps': { minfilter: 'linear', magfilter: 'linear', mipfilter: 'nearest' },
'Trilinear with Mipmaps': { minfilter: 'linear', magfilter: 'linear', mipfilter: 'linear' },
};
TextureUtils.WrapModeMap = {
'Repeat': { wrapModeS: 'repeat', wrapModeT: 'repeat' },
'Clamp': { wrapModeS: 'clamp-to-edge', wrapModeT: 'clamp-to-edge' },
'Mirror': { wrapModeS: 'mirrored-repeat', wrapModeT: 'mirrored-repeat' },
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dHVyZS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NvdXJjZS91dGNwL3V0aWxzL3RleHR1cmUtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0EsTUFBYSxZQUFZO0lBY3JCOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxlQUFlLENBQUMsUUFBYSxFQUFFLElBQVksRUFBRSxLQUFVO1FBQzFELElBQUksSUFBSSxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQ3hCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM1QixNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7UUFDTCxDQUFDO2FBQU0sSUFBSSxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDN0IsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzFCLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDakQsT0FBTyxJQUFJLENBQUM7WUFDaEIsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsdUJBQXVCLENBQUMsUUFBYSxFQUFFLGlCQUErQztRQUN6RixvQkFBb0I7UUFDcEIsSUFBSSxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzVCLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQ2hFLElBQUksUUFBUSxDQUFDLFNBQVMsS0FBSyxRQUFRLENBQUMsU0FB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RUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRTtDQUM5RixDQUFDO0FBRWMsd0JBQVcsR0FBNkQ7SUFDcEYsUUFBUSxFQUFFLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFO0lBQ3RELE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtJQUNuRSxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFO0NBQzNFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IElQcm9wZXJ0eSB9IGZyb20gJ0Bjb2Nvcy9jcmVhdG9yLXR5cGVzL2VkaXRvci9wYWNrYWdlcy9zY2VuZS9AdHlwZXMvcHVibGljJztcblxuZXhwb3J0IGNsYXNzIFRleHR1cmVVdGlscyB7XG4gICAgc3RhdGljIHJlYWRvbmx5IEZpbHRlck1vZGVNYXA6IFJlY29yZDxzdHJpbmcsIHsgbWluZmlsdGVyOiBzdHJpbmc7IG1hZ2ZpbHRlcjogc3RyaW5nOyBtaXBmaWx0ZXI6IHN0cmluZyB9PiA9IHtcbiAgICAgICAgJ05lYXJlc3QgKE5vbmUpJzogeyBtaW5maWx0ZXI6ICduZWFyZXN0JywgbWFnZmlsdGVyOiAnbmVhcmVzdCcsIG1pcGZpbHRlcjogJ25vbmUnIH0sXG4gICAgICAgICdCaWxpbmVhcic6IHsgbWluZmlsdGVyOiAnbGluZWFyJywgbWFnZmlsdGVyOiAnbGluZWFyJywgbWlwZmlsdGVyOiAnbm9uZScgfSxcbiAgICAgICAgJ0JpbGluZWFyIHdpdGggTWlwbWFwcyc6IHsgbWluZmlsdGVyOiAnbGluZWFyJywgbWFnZmlsdGVyOiAnbGluZWFyJywgbWlwZmlsdGVyOiAnbmVhcmVzdCcgfSxcbiAgICAgICAgJ1RyaWxpbmVhciB3aXRoIE1pcG1hcHMnOiB7IG1pbmZpbHRlcjogJ2xpbmVhcicsIG1hZ2ZpbHRlcjogJ2xpbmVhcicsIG1pcGZpbHRlcjogJ2xpbmVhcicgfSxcbiAgICB9O1xuXG4gICAgc3RhdGljIHJlYWRvbmx5IFdyYXBNb2RlTWFwOiBSZWNvcmQ8c3RyaW5nLCB7IHdyYXBNb2RlUzogc3RyaW5nOyB3cmFwTW9kZVQ6IHN0cmluZyB9PiA9IHtcbiAgICAgICAgJ1JlcGVhdCc6IHsgd3JhcE1vZGVTOiAncmVwZWF0Jywgd3JhcE1vZGVUOiAncmVwZWF0JyB9LFxuICAgICAgICAnQ2xhbXAnOiB7IHdyYXBNb2RlUzogJ2NsYW1wLXRvLWVkZ2UnLCB3cmFwTW9kZVQ6ICdjbGFtcC10by1lZGdlJyB9LFxuICAgICAgICAnTWlycm9yJzogeyB3cmFwTW9kZVM6ICdtaXJyb3JlZC1yZXBlYXQnLCB3cmFwTW9kZVQ6ICdtaXJyb3JlZC1yZXBlYXQnIH0sXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEFwcGxpZXMgc3ludGhldGljIHRleHR1cmUgcHJvcGVydGllcyAoZmlsdGVyTW9kZSwgd3JhcE1vZGUpIHRvIHRoZSB1c2VyIGRhdGEuXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBwcm9wZXJ0eSB3YXMgaGFuZGxlZC5cbiAgICAgKi9cbiAgICBzdGF0aWMgYXBwbHlQcm9wZXJ0aWVzKHVzZXJEYXRhOiBhbnksIHBhdGg6IHN0cmluZywgdmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAocGF0aCA9PT0gJ2ZpbHRlck1vZGUnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5GaWx0ZXJNb2RlTWFwW3ZhbHVlXSkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odXNlckRhdGEsIHRoaXMuRmlsdGVyTW9kZU1hcFt2YWx1ZV0pO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHBhdGggPT09ICd3cmFwTW9kZScpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLldyYXBNb2RlTWFwW3ZhbHVlXSkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odXNlckRhdGEsIHRoaXMuV3JhcE1vZGVNYXBbdmFsdWVdKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5qZWN0cyBzeW50aGV0aWMgdGV4dHVyZSBwcm9wZXJ0aWVzIChmaWx0ZXJNb2RlLCB3cmFwTW9kZSkgaW50byB0aGUgcHJvcGVydHkgY29udGFpbmVyLlxuICAgICAqL1xuICAgIHN0YXRpYyBpbmplY3RUZXh0dXJlUHJvcGVydGllcyh1c2VyRGF0YTogYW55LCBwcm9wZXJ0eUNvbnRhaW5lcjogeyBba2V5OiBzdHJpbmddOiBJUHJvcGVydHkgfSk6IHZvaWQge1xuICAgICAgICAvLyBGaWx0ZXIgTW9kZSBMb2dpY1xuICAgICAgICBsZXQgZmlsdGVyTW9kZSA9ICdBZHZhbmNlZCc7XG4gICAgICAgIGZvciAoY29uc3QgW21vZGUsIHNldHRpbmdzXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLkZpbHRlck1vZGVNYXApKSB7XG4gICAgICAgICAgICBpZiAodXNlckRhdGEubWluZmlsdGVyID09PSBzZXR0aW5ncy5taW5maWx0ZXIgJiZcbiAgICAgICAgICAgICAgICB1c2VyRGF0YS5tYWdmaWx0ZXIgPT09IHNldHRpbmdzLm1hZ2ZpbHRlciAmJlxuICAgICAgICAgICAgICAgIHVzZXJEYXRhLm1pcGZpbHRlciA9PT0gc2V0dGluZ3MubWlwZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyTW9kZSA9IG1vZGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBwcm9wZXJ0eUNvbnRhaW5lci5maWx0ZXJNb2RlID0ge1xuICAgICAgICAgICAgdmFsdWU6IGZpbHRlck1vZGUsXG4gICAgICAgICAgICB0eXBlOiAnRW51bScsXG4gICAgICAgICAgICBlbnVtTGlzdDogWy4uLk9iamVjdC5rZXlzKHRoaXMuRmlsdGVyTW9kZU1hcCksICdBZHZhbmNlZCddLm1hcChrID0+ICh7IG5hbWU6IGssIHZhbHVlOiBrIH0pKSxcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAnRmlsdGVyIE1vZGUnLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChmaWx0ZXJNb2RlID09PSAnQWR2YW5jZWQnKSB7XG4gICAgICAgICAgICBwcm9wZXJ0eUNvbnRhaW5lci5taW5maWx0ZXIgPSB7IFxuICAgICAgICAgICAgICAgIHZhbHVlOiB1c2VyRGF0YS5taW5maWx0ZXIsIFxuICAgICAgICAgICAgICAgIHR5cGU6ICdFbnVtJyxcbiAgICAgICAgICAgICAgICBlbnVtTGlzdDogWyduZWFyZXN0JywgJ2xpbmVhciddLm1hcChrID0+ICh7IG5hbWU6IGssIHZhbHVlOiBrIH0pKSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogJ01pbiBGaWx0ZXInLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHByb3BlcnR5Q29udGFpbmVyLm1hZ2ZpbHRlciA9IHsgXG4gICAgICAgICAgICAgICAgdmFsdWU6IHVzZXJEYXRhLm1hZ2ZpbHRlciwgXG4gICAgICAgICAgICAgICAgdHlwZTogJ0VudW0nLFxuICAgICAgICAgICAgICAgIGVudW1MaXN0OiBbJ25lYXJlc3QnLCAnbGluZWFyJ10ubWFwKGsgPT4gKHsgbmFtZTogaywgdmFsdWU6IGsgfSkpLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAnTWFnIEZpbHRlcicsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcHJvcGVydHlDb250YWluZXIubWlwZmlsdGVyID0geyBcbiAgICAgICAgICAgICAgICB2YWx1ZTogdXNlckRhdGEubWlwZmlsdGVyLCBcbiAgICAgICAgICAgICAgICB0eXBlOiAnRW51bScsXG4gICAgICAgICAgICAgICAgZW51bUxpc3Q6IFsnbm9uZScsICduZWFyZXN0JywgJ2xpbmVhciddLm1hcChrID0+ICh7IG5hbWU6IGssIHZhbHVlOiBrIH0pKSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogJ01pcCBGaWx0ZXInLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFdyYXAgTW9kZSBMb2dpY1xuICAgICAgICBsZXQgd3JhcE1vZGUgPSAnQWR2YW5jZWQnO1xuICAgICAgICBmb3IgKGNvbnN0IFttb2RlLCBzZXR0aW5nc10gb2YgT2JqZWN0LmVudHJpZXModGhpcy5XcmFwTW9kZU1hcCkpIHtcbiAgICAgICAgICAgIGlmICh1c2VyRGF0YS53cmFwTW9kZVMgPT09IHNldHRpbmdzLndyYXBNb2RlUyAmJlxuICAgICAgICAgICAgICAgIHVzZXJEYXRhLndyYXBNb2RlVCA9PT0gc2V0dGluZ3Mud3JhcE1vZGVUKSB7XG4gICAgICAgICAgICAgICAgd3JhcE1vZGUgPSBtb2RlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcHJvcGVydHlDb250YWluZXIud3JhcE1vZGUgPSB7XG4gICAgICAgICAgICB2YWx1ZTogd3JhcE1vZGUsXG4gICAgICAgICAgICB0eXBlOiAnRW51bScsXG4gICAgICAgICAgICBlbnVtTGlzdDogWy4uLk9iamVjdC5rZXlzKHRoaXMuV3JhcE1vZGVNYXApLCAnQWR2YW5jZWQnXS5tYXAoayA9PiAoeyBuYW1lOiBrLCB2YWx1ZTogayB9KSksXG4gICAgICAgICAgICBkaXNwbGF5TmFtZTogJ1dyYXAgTW9kZScsXG4gICAgICAgIH07XG5cbiAgICAgICAgIGlmICh3cmFwTW9kZSA9PT0gJ0FkdmFuY2VkJykge1xuICAgICAgICAgICAgY29uc3Qgd3JhcE1vZGVzID0gWydyZXBlYXQnLCAnY2xhbXAtdG8tZWRnZScsICdtaXJyb3JlZC1yZXBlYXQnXS5tYXAoayA9PiAoeyBuYW1lOiBrLCB2YWx1ZTogayB9KSk7XG4gICAgICAgICAgICBwcm9wZXJ0eUNvbnRhaW5lci53cmFwTW9kZVMgPSB7IFxuICAgICAgICAgICAgICAgIHZhbHVlOiB1c2VyRGF0YS53cmFwTW9kZVMsIFxuICAgICAgICAgICAgICAgIHR5cGU6ICdFbnVtJyxcbiAgICAgICAgICAgICAgICBlbnVtTGlzdDogd3JhcE1vZGVzLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAnV3JhcCBNb2RlIFMnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHByb3BlcnR5Q29udGFpbmVyLndyYXBNb2RlVCA9IHsgXG4gICAgICAgICAgICAgICAgdmFsdWU6IHVzZXJEYXRhLndyYXBNb2RlVCwgXG4gICAgICAgICAgICAgICAgdHlwZTogJ0VudW0nLFxuICAgICAgICAgICAgICAgIGVudW1MaXN0OiB3cmFwTW9kZXMsXG4gICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICdXcmFwIE1vZGUgVCcsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcHJvcGVydHlDb250YWluZXIuYW5pc290cm9weSA9IHtcbiAgICAgICAgICAgIHZhbHVlOiB1c2VyRGF0YS5hbmlzb3Ryb3B5LFxuICAgICAgICAgICAgdHlwZTogJ051bWJlcicsXG4gICAgICAgICAgICBkaXNwbGF5TmFtZTogJ0FuaXNvdHJvcHknLFxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==