人生啊人生 10 月之前
父節點
當前提交
c08a61b406

+ 10 - 2
src/components/student/CourseChapter3d.vue

@@ -6,6 +6,7 @@ import { courseChapter3dShow } from "@/stores/courseChapter3dShow.ts";
 import { ThreeWorldEvent } from "./ThreeWorldEvent/js/ThreeWorldEvent.ts";
 import { ThreeWorldEventMain } from "./ThreeWorldEvent/js/ThreeWorldEventMain.ts";
 import { TypeEvent } from "./ThreeWorldEvent/event/TypeEvent.ts";
+import { TypeClick } from "./ThreeWorldEvent/event/TypeClick.ts";
 import { ComVal } from "./ThreeWorldEvent/common/ComVal.ts";
 import { ref, watch } from "vue";
 
@@ -180,10 +181,17 @@ const initScene = () => {
         storesObj
     );
 
+    TypeClick.find().initObj(
+        objNewIframe,
+        objNewIframe.objIframe,
+        objNewIframe.objIframe.ChengGuangYuanJing.CommonVal.find().objScene,
+        objNewIframe.objIframe.BABYLON,
+        storesObj
+    );
+
     // 触发自动点击逻辑
     ChengGuangYuanJing.CommonVal.find().screenClickNumEvent();
-
-
+    
     ComVal.find().initObj(
         objNewIframe,
         objNewIframe.objIframe,

+ 149 - 0
src/components/student/ThreeWorldEvent/event/TypeClick.ts

@@ -0,0 +1,149 @@
+import { ComVal } from '../common/ComVal.ts';
+import { TypeEvent } from '../event/TypeEvent.ts';
+
+/**
+ * 根据点击到的物体,和当前的流程,触发对应的逻辑
+ */
+export class TypeClick {
+    
+    // 已经封装好的,编辑器的类对象,内置可以直接调用的代码
+    public objIframeEdit : any = null;
+    // iframe对象
+    public objIframe : any = null;
+    // 3d世界的场景,后续要操作3d世界常用的对象
+    public objScene : any = null;
+    // babylon 对象,懂babylon,就可以使用babylon的api去操作
+    public BABYLON : any = null;
+
+    /**
+     * stores 合集对象
+     */
+    public storesObj : any = null;
+    
+    static instance: any;
+    
+    // 每次 new 出对象则会调用这个构造函数
+    constructor() {
+        
+    }
+
+    // 实现单例模式
+    static find() {
+        if (!TypeClick.instance) {
+            TypeClick.instance = new TypeClick();
+        }
+        return TypeClick.instance;
+    }
+
+    /**
+     * 初始化方法
+     * objIframeEdit    已经封装好的,编辑器的类对象,内置可以直接调用的代码
+     * objIframe        iframe对象
+     * objScene         场景对象
+     * BABYLON          babylon.js对象,用于后续调用babylon的代码去创建更新等操作
+     * storesObj        stores 合集对象
+     */
+    initObj = (objIframeEdit : any, objIframe : any, objScene : any, BABYLON : any, storesObj : any) => {
+        
+        if (this.objIframe != null && this.objIframe != undefined) {
+            return this;
+        }
+
+        this.objIframeEdit = objIframeEdit;
+        this.objIframe = objIframe;
+        this.objScene = objScene;
+        this.BABYLON = BABYLON;
+        this.storesObj = storesObj;
+        
+        return this;
+
+    }
+
+    /**
+     * 根据点击到的物体,和当前的流程,触发对应的逻辑
+     * pickResult       点击的具体坐标,物体等信息
+     */
+    main = (pickResult : any) => {
+
+        let thisClass = this;
+        let objIframeEdit = this.objIframeEdit;
+        let objIframe = this.objIframe;
+        let objScene = this.objScene;
+        let BABYLON = this.BABYLON;
+        let ChengGuangYuanJing = objIframe.ChengGuangYuanJing;
+        
+        if (TypeEvent.find().eventEnd != 0) {
+            return this;
+        }
+
+        var objMesh = pickResult.pickedMesh;
+        var objPosition = pickResult.pickedPoint;
+        // 获取点击对象的方向【 一定要加上 true,否则载入的获取模型的方向,会有问题 】
+        // eslint-disable-next-line no-unused-vars
+        var getNormal = pickResult.getNormal(true);
+        
+        switch(TypeEvent.find().eventName) {
+            
+            // 仿真模拟
+            case '仿真模拟':
+                
+                break;
+
+            // 请将车门打开
+            case '请将车门打开':
+                
+                console.log(
+                    "objMesh", objMesh.id
+                );
+
+                break;
+
+            // 请将水箱打开
+            case '请将水箱打开':
+                
+                break;
+
+            // 请将水管链接
+            case '请将水管链接':
+                
+                break;
+
+            // 开始清洗
+            case '开始清洗':
+                
+                break;
+
+            // 已完成所有任务
+            case 'equipmentRepositioningWork':
+                
+                break;
+                
+            default:
+                
+                break;
+                
+        }
+        
+    }
+    
+
+
+
+
+
+
+
+    
+
+}
+
+
+
+
+
+
+
+
+
+
+

+ 3 - 0
src/components/student/ThreeWorldEvent/js/ThreeWorldEvent.ts

@@ -1,4 +1,5 @@
 import { ComVal } from '../common/ComVal.ts';
+import { TypeClick } from '../event/TypeClick.ts';
 
 /**
  * 操作 3d场景 相关事件
@@ -196,6 +197,8 @@ export class ThreeWorldEvent {
         //     // pickResult
         //     objMesh, objPosition, getNormal
         // );
+
+        TypeClick.find().main(pickResult);
         
     }