修复纹理参数无法序列化到服务端的问题
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "material-editor",
|
"name": "material-editor",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "1.0.35",
|
"version": "1.0.36",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
|||||||
@@ -55,10 +55,12 @@ async function HandleUpdateConfig() {
|
|||||||
await scene.ImportMaterialAsync(json);
|
await scene.ImportMaterialAsync(json);
|
||||||
editMode.value = true;
|
editMode.value = true;
|
||||||
}
|
}
|
||||||
else { editMode.value = false; }
|
else {
|
||||||
|
editMode.value = false;
|
||||||
if (config.textures && config.textures.length > 0) {
|
if (config.textures && config.textures.length > 0) {
|
||||||
textures.value = Array.from(config.textures);
|
textures.value = Array.from(config.textures);
|
||||||
await scene.ChangeTextureFromUrlAsync(textures.value[0].src); // 这一行是保证首次Mount组件时纹理能够立刻刷新
|
await scene.ChangeTextureFromUrlAsync(textures.value[0].src);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -87,13 +87,23 @@ const sceneSetup = () => {
|
|||||||
/** 这是自定义材质更新方法,WebCAD库中的TextureTableRecord.TextureUpdate方法在导出的时候被删除了,所以需要自己实现 */
|
/** 这是自定义材质更新方法,WebCAD库中的TextureTableRecord.TextureUpdate方法在导出的时候被删除了,所以需要自己实现 */
|
||||||
function UpdateTexture(adjustment?: Partial<TextureAdjustment>) {
|
function UpdateTexture(adjustment?: Partial<TextureAdjustment>) {
|
||||||
const record = _currTexture.value;
|
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;
|
const texture = record['texture'] as Texture;
|
||||||
texture.wrapS = adjustment?.wrapS ?? record.WrapS;
|
texture.wrapS = record.WrapS;
|
||||||
texture.wrapT = adjustment?.wrapT ?? record.WrapT;
|
texture.wrapT = record.WrapT;
|
||||||
texture.anisotropy = 16;
|
texture.anisotropy = 16;
|
||||||
texture.rotation = adjustment?.rotation ?? record.rotation;
|
texture.rotation = record.rotation;
|
||||||
texture.repeat.set(adjustment?.repeatX ?? record.repeatX, adjustment?.repeatY ?? record.repeatY);
|
texture.repeat.set(record.repeatX, record.repeatY);
|
||||||
texture.offset.set(adjustment?.moveX ?? record.moveX, adjustment?.moveY ?? record.moveY);
|
texture.offset.set(record.moveX, record.moveY);
|
||||||
texture.needsUpdate = true;
|
texture.needsUpdate = true;
|
||||||
Update();
|
Update();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user