2025-03-20 17:31:29 +08:00
|
|
|
|
using GCSeries.Core.Input;
|
2024-12-14 18:27:59 +08:00
|
|
|
|
using HighlightPlus;
|
|
|
|
|
|
using QFramework;
|
|
|
|
|
|
using QFramework.Example;
|
2024-12-31 17:06:00 +08:00
|
|
|
|
using System;
|
2024-12-14 18:27:59 +08:00
|
|
|
|
using System.Collections;
|
|
|
|
|
|
using System.Collections.Generic;
|
2025-03-24 10:32:48 +08:00
|
|
|
|
using System.Runtime.CompilerServices;
|
2024-12-14 18:27:59 +08:00
|
|
|
|
using UnityEngine;
|
2025-01-20 18:28:24 +08:00
|
|
|
|
using static OperationController;
|
2024-12-14 18:27:59 +08:00
|
|
|
|
|
|
|
|
|
|
public class DeviceItem : MonoBehaviour
|
|
|
|
|
|
{
|
|
|
|
|
|
public XMLTool.Device device;
|
2025-01-07 17:12:49 +08:00
|
|
|
|
public TipItem tipItem;
|
2024-12-14 18:27:59 +08:00
|
|
|
|
public void Init(XMLTool.Device device)
|
|
|
|
|
|
{
|
|
|
|
|
|
this.device = device;
|
|
|
|
|
|
if (string.IsNullOrEmpty(device.HighColor) == false)
|
|
|
|
|
|
{
|
|
|
|
|
|
var effect = gameObject.GetOrAddComponent<HighlightEffect>();
|
|
|
|
|
|
gameObject.GetOrAddComponent<HighlightTrigger>();
|
2025-03-05 15:12:57 +08:00
|
|
|
|
//<2F><>ȡxml<6D><6C>ɫ<EFBFBD><C9AB>ת<EFBFBD><D7AA>
|
|
|
|
|
|
effect.outlineColor = Utility.ToColor(device.HighColor);
|
2025-01-14 17:56:57 +08:00
|
|
|
|
StringEventSystem.Global.Register<string[]>(Global.HighLightTrigger, OnHighLightTriggerEvent);
|
2025-01-20 18:28:24 +08:00
|
|
|
|
TypeEventSystem.Global.Register<StepStatusOnChange>(OnStepChanged);
|
2025-03-20 13:21:32 +08:00
|
|
|
|
#if VR
|
|
|
|
|
|
effect.constantWidth = false;
|
2025-03-24 10:32:48 +08:00
|
|
|
|
|
2025-03-20 13:21:32 +08:00
|
|
|
|
#endif
|
2024-12-14 18:27:59 +08:00
|
|
|
|
}
|
|
|
|
|
|
if (device.MeshCollider)
|
|
|
|
|
|
{
|
|
|
|
|
|
gameObject.GetOrAddComponent<MeshCollider>();
|
|
|
|
|
|
}
|
2024-12-24 13:52:04 +08:00
|
|
|
|
else if (string.IsNullOrEmpty(device.BoxColliderSize) == false)
|
2024-12-14 18:27:59 +08:00
|
|
|
|
{
|
|
|
|
|
|
BoxCollider box = gameObject.GetOrAddComponent<BoxCollider>();
|
|
|
|
|
|
box.size = Utility.GetVector3FromStrArray(device.BoxColliderSize);
|
|
|
|
|
|
if (string.IsNullOrEmpty(device.BoxColliderCenter) == false)
|
|
|
|
|
|
{
|
|
|
|
|
|
box.center = Utility.GetVector3FromStrArray(device.BoxColliderCenter);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (string.IsNullOrEmpty(device.Tip) == false)
|
2024-12-18 09:00:26 +08:00
|
|
|
|
{
|
2025-01-07 17:12:49 +08:00
|
|
|
|
tipItem = gameObject.GetOrAddComponent<TipItem>();
|
|
|
|
|
|
tipItem.Set(device.Tip);
|
2024-12-14 18:27:59 +08:00
|
|
|
|
}
|
2025-03-24 14:32:22 +08:00
|
|
|
|
#if VR
|
2025-03-24 10:32:48 +08:00
|
|
|
|
UIRoot.Instance.transform.Find("ZMouse").GetComponent<ZPointer>().OnObjectEntered.AddListener(OnObjEnter);
|
|
|
|
|
|
UIRoot.Instance.transform.Find("ZStylus").GetComponent<ZPointer>().OnObjectEntered.AddListener(OnObjEnter);
|
|
|
|
|
|
UIRoot.Instance.transform.Find("ZMouse").GetComponent<ZPointer>().OnObjectExited.AddListener(OnObjExit);
|
|
|
|
|
|
UIRoot.Instance.transform.Find("ZStylus").GetComponent<ZPointer>().OnObjectExited.AddListener(OnObjExit);
|
|
|
|
|
|
UIRoot.Instance.transform.Find("ZMouse").GetComponent<ZPointer>().OnClick.AddListener(OnClick);
|
|
|
|
|
|
UIRoot.Instance.transform.Find("ZStylus").GetComponent<ZPointer>().OnClick.AddListener(OnClick);
|
2025-03-31 08:39:35 +08:00
|
|
|
|
|
|
|
|
|
|
gameObject.GetOrAddComponent<DeviceDraggable>();
|
2025-03-24 14:32:22 +08:00
|
|
|
|
#endif
|
2024-12-14 18:27:59 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-03-24 10:32:48 +08:00
|
|
|
|
|
2025-03-20 17:31:29 +08:00
|
|
|
|
#if VR
|
2025-03-24 10:32:48 +08:00
|
|
|
|
|
|
|
|
|
|
private void OnClick(ZPointer arg0, int arg1, GameObject arg2)
|
2025-03-20 17:31:29 +08:00
|
|
|
|
{
|
2025-03-24 10:32:48 +08:00
|
|
|
|
if (gameObject == arg2)
|
2025-03-20 17:31:29 +08:00
|
|
|
|
{
|
|
|
|
|
|
var effect = gameObject.GetComponent<HighlightEffect>();
|
|
|
|
|
|
if (effect != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
effect.highlighted = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
private void OnObjExit(ZPointer arg0, GameObject arg1)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (gameObject == arg1)
|
|
|
|
|
|
{
|
2025-03-24 14:32:22 +08:00
|
|
|
|
var trigger = gameObject.GetComponent<HighlightTrigger>();
|
|
|
|
|
|
if (trigger == null || trigger.enabled == false)
|
|
|
|
|
|
{
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
2025-03-24 10:32:48 +08:00
|
|
|
|
var effect = gameObject.GetComponent<HighlightEffect>();
|
|
|
|
|
|
if (effect)
|
|
|
|
|
|
{
|
|
|
|
|
|
effect.highlighted = false;
|
|
|
|
|
|
}
|
2025-03-24 14:32:22 +08:00
|
|
|
|
|
2025-03-20 17:31:29 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void OnObjEnter(ZPointer arg0, GameObject arg1)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (gameObject == arg1)
|
|
|
|
|
|
{
|
2025-03-24 14:32:22 +08:00
|
|
|
|
var trigger = gameObject.GetComponent<HighlightTrigger>();
|
|
|
|
|
|
if (trigger == null || trigger.enabled == false)
|
|
|
|
|
|
{
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
2025-03-24 10:32:48 +08:00
|
|
|
|
var effect = gameObject.GetComponent<HighlightEffect>();
|
|
|
|
|
|
if (effect)
|
|
|
|
|
|
{
|
|
|
|
|
|
effect.highlighted = true;
|
|
|
|
|
|
}
|
2025-03-20 17:31:29 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
2025-01-20 18:28:24 +08:00
|
|
|
|
private void OnStepChanged(StepStatusOnChange change)
|
|
|
|
|
|
{
|
|
|
|
|
|
var effect = gameObject.GetComponent<HighlightEffect>();
|
|
|
|
|
|
if (effect != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
effect.highlighted = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-01-14 17:56:57 +08:00
|
|
|
|
public void Close()
|
|
|
|
|
|
{
|
|
|
|
|
|
device = null;
|
|
|
|
|
|
tipItem = null;
|
|
|
|
|
|
StringEventSystem.Global.UnRegister<string[]>(Global.HighLightTrigger, OnHighLightTriggerEvent);
|
2025-01-20 18:28:24 +08:00
|
|
|
|
TypeEventSystem.Global.UnRegister<StepStatusOnChange>(OnStepChanged);
|
2025-01-14 17:56:57 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2024-12-31 17:06:00 +08:00
|
|
|
|
private void OnHighLightTriggerEvent(string[] obj)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (obj.Length > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
bool isActive = true;
|
|
|
|
|
|
bool.TryParse(obj[0], out isActive);
|
2025-01-09 13:57:44 +08:00
|
|
|
|
if (obj.Length == 1 || (obj.Length > 1 && obj[1] == device.Name))
|
|
|
|
|
|
{
|
2025-01-13 08:51:44 +08:00
|
|
|
|
var high = gameObject.GetComponent<HighlightTrigger>();
|
|
|
|
|
|
if (high != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
gameObject.GetComponent<HighlightTrigger>().enabled = isActive;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
Debug.LogError(device.Name + "<22><><EFBFBD><EFBFBD>û<EFBFBD>и<EFBFBD><D0B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|
|
|
|
|
}
|
2025-01-09 13:57:44 +08:00
|
|
|
|
}
|
2024-12-31 17:06:00 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-12-24 13:52:04 +08:00
|
|
|
|
private void OnMouseUpAsButton()
|
|
|
|
|
|
{
|
|
|
|
|
|
var effect = gameObject.GetComponent<HighlightEffect>();
|
|
|
|
|
|
if (effect != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
effect.highlighted = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-12-14 18:27:59 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|