ElectricityBusinessHall_Dig.../Assets/Resources/Scripts/Function/ClientClick.cs

119 lines
3.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using UnityEngine.EventSystems;
public class ClientClick : MonoBehaviour
{
//人员编号
public int index;
//是否允许单体化展示
public bool isSingle = false;
void Start()
{
AddGameObjectCollider();
}
void Update()
{
}
private void OnMouseUp()
{
if (EventSystem.current.IsPointerOverGameObject())
{
Debug.Log("鼠标在UI上");
return;
}
ViewCenter();
//智慧运营模块
if (Main.intance.curModuleIndex == 1)
Main.intance.m_htmlPanel.CallFunction("showOverTimeTip");
if (!isSingle)
return;
//ShowSingle();
}
/// <summary>
/// 视角居中
/// </summary>
void ViewCenter()
{
Debug.Log("model" + transform.name);
//获取模型中心点位置(加上模型方向*3X轴方向朝前
Vector3 playerPos = transform.position + transform.right * 3;
//相机面向设备
Quaternion angle = Quaternion.LookRotation(-transform.right);
Debug.Log("pos" + playerPos + ";angle" + angle);
//Main.intance.mainCamera.GetComponent<CameraView>().CameraMoveTarget(playerPos, angle);
Main.intance.CameraMoveTarget(playerPos, angle);
}
/// <summary>
/// 单体化展示
/// </summary>
void ShowSingle()
{
//设备信息弹窗
Main.intance.m_htmlPanel.CallFunction("U3DShowPeopleDetails", 0);
//将上一个单体化物体隐藏
if (Main.intance.CurentSingleObj != null)
{
Main.intance.singleCam.GetComponent<Camera360>().ChangeObjLayer(Main.intance.CurentSingleObj, "Default");
}
//显示单体化展示页面
Main.intance.CurentSinglePage.SetActive(true);
//将当前物体设置为单体化360观察的物体
Main.intance.CurentSingleObj = gameObject;
Main.intance.singleCam.GetComponent<Camera360>().SetTarget(transform);
Main.intance.singleCam.GetComponent<Camera360>().ChangeObjLayer(Main.intance.CurentSingleObj, "single360");
Main.intance.ShowSingleModel(true);
}
/// <summary>
/// 在自身添加碰撞体
/// </summary>
/// <param name="gameObject"></param>
public void AddGameObjectCollider()
{
//获取物体的最小包围盒
Bounds itemBound = GetLocalBounds(gameObject);
if (!gameObject.GetComponent<Collider>())
{
gameObject.AddComponent<BoxCollider>();
gameObject.GetComponent<BoxCollider>().size = itemBound.size;
gameObject.GetComponent<BoxCollider>().center = itemBound.center - transform.position;
}
}
/// <summary>
/// 获得对象的最小包围盒
/// </summary>
public static Bounds GetLocalBounds(GameObject target)
{
MeshRenderer[] mfs = target.GetComponentsInChildren<MeshRenderer>();
Bounds bounds = new Bounds();
if (mfs.Length != 0)
{
bounds = mfs[0].bounds;
foreach (MeshRenderer mf in mfs)
{
bounds.Encapsulate(mf.bounds);
}
}
return bounds;
}
}