Option in template generator to disable UV mirroring (#2218)

This commit is contained in:
JannisX11 2024-12-23 15:00:37 +01:00
parent c6f6179cef
commit f6070dd7bd
4 changed files with 28 additions and 15 deletions

View File

@ -688,6 +688,15 @@ window.ToolConfig = class ToolConfig extends Dialog {
save() {
localStorage.setItem(`tool_config.${this.id}`, JSON.stringify(this.options));
}
changeOptions(options) {
for (let key in options) {
this.options[key] = options[key];
}
if (this.form) {
this.form.setValues(options);
}
this.save();
}
close(button, event) {
this.save();
this.hide();

View File

@ -487,7 +487,6 @@ class InputForm extends EventSystem {
for (let form_id in this.form_config) {
let data = this.form_data[form_id];
let input_config = this.form_config[form_id];
console.log(form_id, values[form_id])
if (values[form_id] != undefined && typeof input_config == 'object' && data.bar) {
let value = values[form_id];
switch (input_config.type) {
@ -532,7 +531,6 @@ class InputForm extends EventSystem {
data.colorpicker.set(value);
break;
case 'checkbox':
console.log(data.bar.find('input'), value)
data.bar.find('input').prop('checked', value);
break;
case 'file':

View File

@ -36,23 +36,24 @@ const TextureGenerator = {
title: tl('action.create_texture'),
width: 610,
form: {
name: {label: 'generic.name', value: 'texture'},
folder: {label: 'dialog.create_texture.folder', condition: {features: ['texture_folder']}},
type: {label: 'dialog.create_texture.type', type: 'inline_select', options: type_options, condition: Object.keys(type_options).length > 1},
section2: "_",
name: {label: 'generic.name', value: 'texture'},
folder: {label: 'dialog.create_texture.folder', condition: {features: ['texture_folder']}},
type: {label: 'dialog.create_texture.type', type: 'inline_select', options: type_options, condition: Object.keys(type_options).length > 1},
section2: "_",
resolution: {label: 'dialog.create_texture.pixel_density', description: 'dialog.create_texture.pixel_density.desc', type: 'select', value: resolution_presets[resolution] ? resolution : undefined, condition: (form) => (form.type == 'template'), options: resolution_presets},
resolution: {label: 'dialog.create_texture.pixel_density', description: 'dialog.create_texture.pixel_density.desc', type: 'select', value: resolution_presets[resolution] ? resolution : undefined, condition: (form) => (form.type == 'template'), options: resolution_presets},
resolution_vec: {label: 'dialog.create_texture.resolution', type: 'vector', condition: (form) => (form.type == 'blank'), dimensions: 2, value: [Project.texture_width, Project.texture_height], min: 16, max: 2048},
color: {label: 'data.color', type: 'color', colorpicker: TextureGenerator.background_color, toggle_enabled: true, toggle_default: false},
color: {label: 'data.color', type: 'color', colorpicker: TextureGenerator.background_color, toggle_enabled: true, toggle_default: false},
rearrange_uv:{label: 'dialog.create_texture.rearrange_uv', description: 'dialog.create_texture.rearrange_uv.desc', type: 'checkbox', value: true, condition: (form) => (form.type == 'template')},
box_uv: {label: 'dialog.project.uv_mode.box_uv', type: 'checkbox', value: false, condition: (form) => (form.type == 'template' && !Project.box_uv && Cube.all.length)},
power: {label: 'dialog.create_texture.power', description: 'dialog.create_texture.power.desc', type: 'checkbox', value: true, condition: (form) => (form.type !== 'blank' && (form.rearrange_uv || form.type == 'color_map'))},
double_use: {label: 'dialog.create_texture.double_use', description: 'dialog.create_texture.double_use.desc', type: 'checkbox', value: true, condition: ((form) => (form.type == 'template' && form.rearrange_uv))},
combine_polys: {label: 'dialog.create_texture.combine_polys', description: 'dialog.create_texture.combine_polys.desc', type: 'checkbox', value: true, condition: (form) => (form.type == 'template' && form.rearrange_uv && Mesh.selected.length)},
max_edge_angle: {label: 'dialog.create_texture.max_edge_angle', description: 'dialog.create_texture.max_edge_angle.desc', type: 'number', value: 36, condition: (form) => (form.type == 'template' && form.rearrange_uv && Mesh.selected.length)},
rearrange_uv: {label: 'dialog.create_texture.rearrange_uv', description: 'dialog.create_texture.rearrange_uv.desc', type: 'checkbox', value: true, condition: (form) => (form.type == 'template')},
box_uv: {label: 'dialog.project.uv_mode.box_uv', type: 'checkbox', value: false, condition: (form) => (form.type == 'template' && !Project.box_uv && Cube.all.length)},
power: {label: 'dialog.create_texture.power', description: 'dialog.create_texture.power.desc', type: 'checkbox', value: true, condition: (form) => (form.type !== 'blank' && (form.rearrange_uv || form.type == 'color_map'))},
double_use: {label: 'dialog.create_texture.double_use', description: 'dialog.create_texture.double_use.desc', type: 'checkbox', value: true, condition: ((form) => (form.type == 'template' && form.rearrange_uv))},
combine_polys: {label: 'dialog.create_texture.combine_polys', description: 'dialog.create_texture.combine_polys.desc', type: 'checkbox', value: true, condition: (form) => (form.type == 'template' && form.rearrange_uv && Mesh.selected.length)},
max_edge_angle: {label: 'dialog.create_texture.max_edge_angle', description: 'dialog.create_texture.max_edge_angle.desc', type: 'number', value: 36, condition: (form) => (form.type == 'template' && form.rearrange_uv && Mesh.selected.length)},
max_island_angle: {label: 'dialog.create_texture.max_island_angle', description: 'dialog.create_texture.max_island_angle.desc', type: 'number', value: 45, condition: (form) => (form.type == 'template' && form.rearrange_uv && Mesh.selected.length)},
padding: {label: 'dialog.create_texture.padding', description: 'dialog.create_texture.padding.desc', type: 'checkbox', value: Mesh.selected.length > 0, condition: (form) => (form.type == 'template' && form.rearrange_uv)},
padding: {label: 'dialog.create_texture.padding', description: 'dialog.create_texture.padding.desc', type: 'checkbox', value: Mesh.selected.length > 0, condition: (form) => (form.type == 'template' && form.rearrange_uv)},
disable_mirror_uv:{label: 'dialog.create_texture.disable_mirror_uv', description: 'dialog.create_texture.disable_mirror_uv.desc', type: 'checkbox', value: true, condition: (form) => BarItems.mirror_modeling.value && BarItems.mirror_modeling.tool_config.options.mirror_uv},
},
onConfirm: function(results) {
@ -60,6 +61,9 @@ const TextureGenerator = {
if (results.type == 'blank') {
results.resolution = results.resolution_vec;
}
if (results.disable_mirror_uv) {
BarItems.mirror_modeling.tool_config.changeOptions({mirror_uv: false});
}
dialog.hide()
if (Format.edit_mode && Outliner.selected.length == 0) {
SharedActions.runSpecific('select_all', 'outliner');

View File

@ -678,6 +678,8 @@
"dialog.create_texture.resolution.desc": "The height and width of the texture",
"dialog.create_texture.pixel_density": "Pixel Density",
"dialog.create_texture.pixel_density.desc": "The pixel density of the texture, in pixels per meter. The size of the texture map may differ depending on the amount and size of elements.",
"dialog.create_texture.disable_mirror_uv": "Disable UV Mirroring",
"dialog.create_texture.disable_mirror_uv.desc": "Disable the UV Mirror option in Mirror Modeling to preserve separate UVs for each side of the model",
"dialog.mirror_painting_texture_center.middle": "Middle",
"dialog.mirror_painting_texture_center.custom": "Custom",