using GCSeries.Core.Input; using HighlightPlus; using QFramework; using QFramework.Example; using System; using System.Collections; using System.Collections.Generic; using System.Runtime.CompilerServices; using UnityEngine; using static OperationController; public class DeviceItem : MonoBehaviour { public XMLTool.Device device; public TipItem tipItem; public void Init(XMLTool.Device device) { this.device = device; TypeEventSystem.Global.Register(OnModuleQuitEvent); if (string.IsNullOrEmpty(device.HighColor) == false) { var effect = gameObject.GetOrAddComponent(); gameObject.GetOrAddComponent(); //��ȡxml��ɫ��ת�� effect.outlineColor = Utility.ToColor(device.HighColor); StringEventSystem.Global.Register(Global.HighLightTrigger, OnHighLightTriggerEvent); TypeEventSystem.Global.Register(OnStepChanged); #if VR effect.constantWidth = false; #endif } if (device.MeshCollider) { gameObject.GetOrAddComponent(); } else if (string.IsNullOrEmpty(device.BoxColliderSize) == false) { BoxCollider box = gameObject.GetOrAddComponent(); box.size = Utility.GetVector3FromStrArray(device.BoxColliderSize); if (string.IsNullOrEmpty(device.BoxColliderCenter) == false) { box.center = Utility.GetVector3FromStrArray(device.BoxColliderCenter); } } if (string.IsNullOrEmpty(device.Tip) == false) { tipItem = gameObject.GetOrAddComponent(); tipItem.Set(device.Tip); } #if VR UIRoot.Instance.transform.Find("ZMouse").GetComponent().OnObjectEntered.AddListener(OnObjEnter); UIRoot.Instance.transform.Find("ZStylus").GetComponent().OnObjectEntered.AddListener(OnObjEnter); UIRoot.Instance.transform.Find("ZMouse").GetComponent().OnObjectExited.AddListener(OnObjExit); UIRoot.Instance.transform.Find("ZStylus").GetComponent().OnObjectExited.AddListener(OnObjExit); UIRoot.Instance.transform.Find("ZMouse").GetComponent().OnClick.AddListener(OnClick); UIRoot.Instance.transform.Find("ZStylus").GetComponent().OnClick.AddListener(OnClick); //gameObject.GetOrAddComponent(); gameObject.GetOrAddComponent(); #endif } #if VR private void OnClick(ZPointer arg0, int arg1, GameObject arg2) { if (gameObject == arg2) { var effect = gameObject.GetComponent(); if (effect != null) { effect.highlighted = false; } } } private void OnObjExit(ZPointer arg0, GameObject arg1) { if (gameObject == arg1) { var trigger = gameObject.GetComponent(); if (trigger == null || trigger.enabled == false) { return; } var effect = gameObject.GetComponent(); if (effect) { effect.highlighted = false; } } } private void OnObjEnter(ZPointer arg0, GameObject arg1) { if (gameObject == arg1) { var trigger = gameObject.GetComponent(); if (trigger == null || trigger.enabled == false) { return; } var effect = gameObject.GetComponent(); if (effect) { effect.highlighted = true; } } } #endif private void OnStepChanged(StepStatusOnChange change) { CloseHighLight(); } private void OnModuleQuitEvent(OnModuleQuit quit) { CloseHighLight(); } public void CloseHighLight() { var effect = gameObject.GetComponent(); if (effect != null) { effect.highlighted = false; } } public void Close() { device = null; tipItem = null; StringEventSystem.Global.UnRegister(Global.HighLightTrigger, OnHighLightTriggerEvent); TypeEventSystem.Global.UnRegister(OnStepChanged); TypeEventSystem.Global.UnRegister(OnModuleQuitEvent); } private void OnHighLightTriggerEvent(string[] obj) { if (obj.Length > 0) { bool isActive = true; bool.TryParse(obj[0], out isActive); if (obj.Length == 1 || (obj.Length > 1 && obj[1] == device.Name)) { var high = gameObject.GetComponent(); if (high != null) { gameObject.GetComponent().enabled = isActive; } else { Debug.LogError(device.Name + "����û�и������"); } } } } private void OnMouseUpAsButton() { var effect = gameObject.GetComponent(); //鼠标点击不处理此操作 // if (effect != null) // { // effect.highlighted = false; // } } }