qinyan 1 year ago
parent
commit
12783d638b

+ 1 - 1
src/modules/resource/store.ts

@@ -10,7 +10,7 @@ export const store = ResourceModule.store({
   }),
   getters: {
     currentMesh(state) {
-      return state.sourceDetail.webEditor?.meshSlots?.filter(
+      return state.sourceDetail.webEditor?.meshSlots?.find(
         (e: any) => e.Id == state.selectedId
       );
     },

+ 10 - 10
src/pages/website/EditMaterial/components/LeftPanel.tsx

@@ -16,17 +16,19 @@ export default defineComponent({
     const queditor = useQueditor();
 
     const replaceMesh = async () => {
-      const res = await resource.showModal<AssetItemFile>(<LibraryModal />, {
-        width: "900px",
-      });
-      console.log("res: ", res);
+      const branchFolder = await resource.showModal<AssetItemFile>(
+        <LibraryModal />,
+        {
+          width: "900px",
+        }
+      );
 
-      const pack = await res.getAssetDetail();
+      const pack = await branchFolder.getAssetDetail();
       const data = queditor.helper.getRelatedSourceByProduct(
         pack.source as Pack["source"],
-        res.state.id
+        branchFolder.state.id
       );
-      console.log("data: ", data);
+
       queditor.actions.insertMesh(data);
     };
 
@@ -45,11 +47,9 @@ export default defineComponent({
                   onChange={replaceMesh}
                   active={record.Id == resource.store.selectedId}
                   onClick={() => {
-                    // queditor.
-                    debugger;
                     switchSceneProdComp.call(
                       queditor.controls.queen3dCtrl,
-                      queditor.store.pack.scenes[0].products[0].prodId,
+                      queditor.store.pack.scenes[0].products[0].id,
                       record.meshName
                     );
                     resource.store.setSelectedId(record.Id);

+ 40 - 3
src/pages/website/EditMaterial/components/RightPanel.tsx

@@ -1,4 +1,7 @@
 import { useResource } from "@/modules/resource";
+import { useQueditor } from "@queenjs-modules/queditor";
+import { Pack, PackMat } from "@queenjs-modules/queditor/objects";
+import { IQueentree } from "@queenjs-modules/queentree";
 import { AssetItemFile } from "@queenjs-modules/queentree-explorer/objects/fileSystem/assetFiles";
 import { Image, List } from "@queenjs/ui";
 import { Button } from "ant-design-vue";
@@ -9,18 +12,52 @@ import LibraryModal from "./LibraryModal";
 export default defineComponent({
   setup() {
     const resource = useResource();
+    const queditor = useQueditor();
 
     const replaceMat = async () => {
-      const res = await resource.showModal<AssetItemFile>(
+      const branchFolder = await resource.showModal<AssetItemFile>(
         <LibraryModal nodeTypes={["matGroupItem", "mat", "packMat"]} />,
         {
           width: "900px",
         }
       );
-      console.log("res: ", res);
+      console.log("branchFolder: ", branchFolder);
 
-      const data = await res.getAssetDetail();
+      const data = await branchFolder.getAssetDetail();
       console.log("data: ", data);
+
+      let mat;
+      switch (branchFolder.nodeType) {
+        case "matGroupItem":
+          mat = (data as IQueentree.IAssetMatGroup).source.colorCards.find(
+            (d: PackMat) => d.id == branchFolder.state.id
+          );
+          break;
+        case "packMat":
+          mat = (data.source as Pack["source"]).mats.find(
+            (d: PackMat) => d.id == branchFolder.state.id
+          );
+          break;
+        case "mat":
+          mat = data.source as PackMat;
+          break;
+      }
+
+      const targetComp = getTargetProCom();
+      console.error("targetComp: ", targetComp);
+
+      if (!targetComp || !mat) return;
+
+      queditor.actions.updatePackProductCompMat(targetComp, mat);
+    };
+
+    const getTargetProCom = () => {
+      const source: Pack["source"] = queditor.store.pack;
+      const targetPro = source.products[0];
+      const targetComp = targetPro?.components.find(
+        (c) => c.name == resource.store.currentMesh.meshName
+      );
+      return targetComp;
     };
 
     return () => {

+ 8 - 5
src/pages/website/EditMaterial/index.tsx

@@ -53,11 +53,14 @@ export default defineComponent({
       queditor.actions.initPack(resource.store.sourceDetail?.webEditor?.pack);
       queditor.store.setCurrScene(0);
       expViewer.store.setEditNodeUid(resource.store.sourceDetail._id);
-      switchSceneProdComp.call(
-        queditor.controls.queen3dCtrl,
-        queditor.store.pack.scenes[0].products[0].prodId,
-        resource.store.currentMesh.meshName
-      );
+
+      queditor.actions.on("initQueen3dScene:success", () => {
+        switchSceneProdComp.call(
+          queditor.controls.queen3dCtrl,
+          queditor.store.pack.scenes[0].products[0].id,
+          resource.store.currentMesh.meshName
+        );
+      });
     };
 
     onMounted(() => init());