export function handleDBLClick(e) {
  this._saveSate();
  // 注意位置不能改变
  this.clearTagsObj();

  this.preDBLModel = e;
  //获取模型世界坐标位置
  const modelP = new this.THREE.Vector3();
  e.getWorldPosition(modelP);
  this._checkAnimation(modelP);

  this.setBoxHelper(e);
  if (/l$/.test(e.name)) {
    //匹配单个隧道左边附着点
    modelP.x += 5;
    modelP.y -= 5;
    modelP.z += 10;

    this.orbitControls.target = modelP;
    this.cameraPositionTween = new this.TWEEN.Tween(this.camera.position);
    this.cameraPositionTween.to(modelP, 400);
    this.cameraPositionTween.start();

    modelP.x -= 4;
    modelP.y += 4;
    modelP.z -= 20;
  } else if (/r$/.test(e.name)) {
    //匹配单个隧道右边附着点
    modelP.x -= 5;
    modelP.y -= 5;
    modelP.z += 10;
    this.orbitControls.target = modelP;
    this.cameraPositionTween = new this.TWEEN.Tween(this.camera.position);
    this.cameraPositionTween.to(modelP, 400);
    this.cameraPositionTween.start();
    modelP.x += 4;
    modelP.y += 4;
    modelP.z -= 20;
  }
  if (this.preTargetModel) {
    this.preTargetModel.remove(this.tagCSS2DObj);
  }
  this.cameraPositionTween.onComplete(() => {
    this.orbitControls.target = modelP;
    this.camera.lookAt(modelP);
    // 动画完成过后自动弹出标签
    autoOutTag(e, this);
    this.listenerEventFlag = false;
    // 返回个组件
    this.displayDevInfo(e);
  });
}

// 视角移动过去自动弹出标签
function autoOutTag(targetModel, context) {
  // 判断是否纯在设备
  // if (targetModel.hasDevice) return;
  context.preTargetModel = targetModel;
  context.tagCSS2DObj.element.style.display = "block";

  targetModel.add(context.tagCSS2DObj);
  if (/l$/.test(targetModel.name)) {
    context.tagCSS2DObj.position.set(150, 0, 700);
  } else if (/r$/.test(targetModel.name)) {
    context.tagCSS2DObj.position.set(-150, 0, 700);
  }
}
