|
@@ -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;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|