diff --git a/package.json b/package.json
index 50e8be3..97b245b 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "material-editor",
"private": true,
- "version": "1.0.14",
+ "version": "1.0.15",
"type": "module",
"scripts": {
"dev": "vite",
diff --git a/src/components/MaterialAdjuster.vue b/src/components/MaterialAdjuster.vue
index 12f02ce..651ac21 100644
--- a/src/components/MaterialAdjuster.vue
+++ b/src/components/MaterialAdjuster.vue
@@ -7,7 +7,7 @@
-
+
@@ -130,10 +130,12 @@ const scene = useScene();
const props = defineProps<{
name?: string;
textureSrcList?: string[];
+ /** 忽略纹理参数,提交时直接输出场景内的材质,用于某些在组件外对场景进行编辑的特殊情况(例如材质编辑模式) */
+ ignoreTexture?: boolean;
}>();
const emits = defineEmits<{
(e: 'cancel'): void;
- (e: 'submit', data: MaterialRequest[]): void;
+ (e: 'submit', data: MaterialRequest[]): void;
}>();
const Material = computed(() => scene.Material);
@@ -161,8 +163,8 @@ const uploading = ref(false);
// });
const materialInfo = reactive({
dirId: DirectoryId.MaterialDir, // 正常来说是2
- materialName: props.name || '材质',
- inputText:'',
+ materialName: props.name || '材质',
+ inputText: '',
});
watch(() => props.textureSrcList, async (val) => {
@@ -182,7 +184,7 @@ watch(() => scene.CurrTexture, (val) => {
rotation: val.rotation,
repeatX: val.repeat.x,
repeatY: val.repeat.y,
- moveX: val.offset.x,
+ moveX: val.offset.x,
moveY: val.offset.y
}
})
@@ -218,7 +220,7 @@ function UpdateTexture() {
}
async function loadData() {
- if(!materialInfo.inputText) return;
+ if (!materialInfo.inputText) return;
const json = JSON.parse(materialInfo.inputText);
const cadFile = FromDeflateBase64(json.file);
scene.ImportMaterialAsync(cadFile)
@@ -233,18 +235,31 @@ async function HandleUpload() {
uploading.value = true;
const result = [];
- // 遍历纹理链接列表,更改纹理后将材质序列化,然后还原场景
- let idx = 0;
- for (const src of props.textureSrcList) {
- await scene.ChangeTextureFromUrlAsync(src);
+ if (props.ignoreTexture) {
+ // 直接将材质序列化
const mat = {
- name: materialInfo.materialName + ++idx,
+ name: materialInfo.materialName,
logo: await scene.GenerateMaterialLogoAsync(),
// jsonString -> Deflate -> BinaryString -> Base64
file: ToDeflatedBase64(await scene.SerializeMaterialAsync())
};
result.push(mat);
+ }
+ else {
+ // 遍历纹理链接列表,更改纹理后将材质序列化,然后还原场景
+ let idx = 0;
+ for (const src of _textureSrc.value) {
+ await scene.ChangeTextureFromUrlAsync(src);
+ const mat = {
+ name: materialInfo.materialName + ++idx,
+ logo: await scene.GenerateMaterialLogoAsync(),
+ // jsonString -> Deflate -> BinaryString -> Base64
+ file: ToDeflatedBase64(await scene.SerializeMaterialAsync())
+ };
+ result.push(mat);
+ }
}
+
await scene.ChangeTextureFromUrlAsync(_textureSrc.value[0]);
emits('submit', result);
return result;
diff --git a/src/components/MaterialView.vue b/src/components/MaterialView.vue
index 813cd86..7cee791 100644
--- a/src/components/MaterialView.vue
+++ b/src/components/MaterialView.vue
@@ -1,7 +1,8 @@
-
+