diff --git a/package.json b/package.json index d6609e0..1521522 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "material-editor", "private": true, - "version": "1.0.35", + "version": "1.0.36", "type": "module", "scripts": { "dev": "vite", diff --git a/src/components/MaterialView.vue b/src/components/MaterialView.vue index 6860276..3d37342 100644 --- a/src/components/MaterialView.vue +++ b/src/components/MaterialView.vue @@ -55,10 +55,12 @@ async function HandleUpdateConfig() { await scene.ImportMaterialAsync(json); editMode.value = true; } - else { editMode.value = false; } - if (config.textures && config.textures.length > 0) { - textures.value = Array.from(config.textures); - await scene.ChangeTextureFromUrlAsync(textures.value[0].src); // 这一行是保证首次Mount组件时纹理能够立刻刷新 + else { + editMode.value = false; + if (config.textures && config.textures.length > 0) { + textures.value = Array.from(config.textures); + await scene.ChangeTextureFromUrlAsync(textures.value[0].src); + } } } diff --git a/src/stores/sceneStore.ts b/src/stores/sceneStore.ts index 5dcb77d..67a6998 100644 --- a/src/stores/sceneStore.ts +++ b/src/stores/sceneStore.ts @@ -87,13 +87,23 @@ const sceneSetup = () => { /** 这是自定义材质更新方法,WebCAD库中的TextureTableRecord.TextureUpdate方法在导出的时候被删除了,所以需要自己实现 */ function UpdateTexture(adjustment?: Partial) { const record = _currTexture.value; + if (adjustment) { + // 将用户修改的纹理配置项同步写回 TextureTableRecord,确保序列化时数据不丢失 + if (adjustment.wrapS !== undefined) record.WrapS = adjustment.wrapS; + if (adjustment.wrapT !== undefined) record.WrapT = adjustment.wrapT; + if (adjustment.rotation !== undefined) record.rotation = adjustment.rotation; + if (adjustment.repeatX !== undefined) record.repeatX = adjustment.repeatX; + if (adjustment.repeatY !== undefined) record.repeatY = adjustment.repeatY; + if (adjustment.moveX !== undefined) record.moveX = adjustment.moveX; + if (adjustment.moveY !== undefined) record.moveY = adjustment.moveY; + } const texture = record['texture'] as Texture; - texture.wrapS = adjustment?.wrapS ?? record.WrapS; - texture.wrapT = adjustment?.wrapT ?? record.WrapT; + texture.wrapS = record.WrapS; + texture.wrapT = record.WrapT; texture.anisotropy = 16; - texture.rotation = adjustment?.rotation ?? record.rotation; - texture.repeat.set(adjustment?.repeatX ?? record.repeatX, adjustment?.repeatY ?? record.repeatY); - texture.offset.set(adjustment?.moveX ?? record.moveX, adjustment?.moveY ?? record.moveY); + texture.rotation = record.rotation; + texture.repeat.set(record.repeatX, record.repeatY); + texture.offset.set(record.moveX, record.moveY); texture.needsUpdate = true; Update(); }