123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- using System.Collections.Generic;
- using UnityEngine;
- using ChivaXR.Op;
- using ChivaXR.VR;
- using ChivaXR;
- using VRTK;
- using System;
- using UnityEngine.SceneManagement;
- using QFramework;
- public class HandHintManager : MonoBehaviour
- {
- public List<OperationDataBase> list;
- public List<VRTK_InteractableObject> toolList;
- public Transform hand;
- public List<GameObject> opHintGos = new List<GameObject>();
- public VRTK_ControllerEvents leftController;
- public VRTK_ControllerEvents rightController;
- private InteractableHandHint handHint;
- private int stepID;
- /// <summary>
- /// 记录构建场景信息
- /// </summary>
- private Dictionary<int, string> m_RecordBuildSceneInfo = new Dictionary<int, string>();
- void Start()
- {
- handHint = GetComponent<InteractableHandHint>();
- ProcessManagement.Instance.EnterProcessEvent += EnterProcessEvent;
- ProcessManagement.Instance.processElementDisActiveEvent += PrcessElementDisActiveEvent;
- }
- private void PrcessElementDisActiveEvent(ProcessElement processElement)
- {
- if (processElement == ProcessManagement.Instance.processes[ProcessManagement.Instance.processes.Count - 1])
- {
- if (ProcessManagement.Instance.processes.Count - 1 == stepID)
- {
- LearningUIController.Instance.SetText("点击扳机返回主常见功能");
- if (leftController == null && rightController == null) return;
- leftController.TriggerPressed += TriggerPress;
- rightController.TriggerPressed += TriggerPress;
- }
- }
- }
- private void OnDestory()
- {
- leftController.TriggerPressed -= TriggerPress;
- rightController.TriggerPressed -= TriggerPress;
- }
- private void TriggerPress(object sender, ControllerInteractionEventArgs e)
- {
- }
- private string GetBuildSceneName()
- {
- string sceneName = string.Empty;
- var m_BuildSettingsNumber = SceneManager.sceneCountInBuildSettings;
- for (int i = 0; i < m_BuildSettingsNumber; i++)
- {
- if (!m_RecordBuildSceneInfo.ContainsKey(i))
- {
- string buildPath = SceneUtility.GetScenePathByBuildIndex(i);
- if (!string.IsNullOrEmpty(buildPath))
- {
- //只获取场景名称
- string temp = buildPath.Split('/')[buildPath.Split('/').Length - 1].Split('.')[0];
- m_RecordBuildSceneInfo.Add(i, temp);
- }
- }
- }
- foreach (var item in m_RecordBuildSceneInfo.Values)
- {
- string[] temps = item.Split('_');
- if (temps[temps.Length - 1].Equals("Practice"))
- {
- sceneName = item;
- }
- }
- return sceneName;
- }
- private void EnterProcessEvent(int stepID)
- {
- this.stepID = stepID;
- EnterProcess();
- }
- private void EnterProcess()
- {
- var triggerElement = list[stepID].GetComponent<OpTrigger_VRToolTriggerElement>();
- var objElement = list[stepID].GetComponent<OpTrigger_VRObjTriggerElement>();
- for (int i = 0; i < toolList.Count; i++)
- {
- if (triggerElement)//扳机触发
- {
- LearningUIController.Instance.SetText(triggerElement.operationDescription);
- if (toolList[i].GetComponent<CVR_ToolTypeFlags>().CVR_ToolType == triggerElement.triggerElements[0].toolType)
- {
- handHint.InitInteractable(toolList[i], triggerElement.triggerElements[0].transform);
- }
- }
- else if (objElement)//直接触发
- {
- handHint.InitInteractable(objElement.triggerObjs[0].GetComponent<CVR_InteractableVRTK>(), objElement.triggerObjs[0].transform, false);
- LearningUIController.Instance.SetText(objElement.operationDescription);
- }
- }
- }
- /// <summary>
- /// 工具提示图标
- /// </summary>
- public void HandHintState(bool state, Vector3 pos)
- {
- //hand.gameObject.SetActive(state);
- //hand.position = new Vector3(pos.x, pos.y + 0.05f, pos.z - 0.05f);
- }
- /// <summary>
- /// 操作物提示图标
- /// </summary>
- public void OperationHintState(Transform go, bool state)
- {
- if (go.Find("GameObject"))
- {
- var temp = go.Find("GameObject").gameObject;
- temp.SetActive(state);
- }
- }
- }
- public enum OpHintType
- {
- mabu,
- jiaodai,
- jiareqi
- }
|