127 lines
3.4 KiB
C#
127 lines
3.4 KiB
C#
using GCSeries.Core.Input;
|
|
using QFramework;
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using XMLTool;
|
|
using static OperationController;
|
|
|
|
public class Point3DItem : MonoBehaviour
|
|
{
|
|
Point3DQuestion.Data data;
|
|
|
|
[SerializeField]
|
|
private float rotSpeed = 180.0f;
|
|
public void Init(Point3DQuestion.Data data)
|
|
{
|
|
this.data = data;
|
|
if (string.IsNullOrEmpty(data.name) == false)
|
|
{
|
|
gameObject.name = data.name;
|
|
}
|
|
if (string.IsNullOrEmpty(data.deviceName))
|
|
{
|
|
gameObject.transform.position = data.pos;
|
|
gameObject.transform.eulerAngles = data.rotate;
|
|
gameObject.transform.localScale = data.scale;
|
|
}
|
|
else
|
|
{
|
|
GameObject device = DeviceController.Instance.GetDeviceObj(data.deviceName);
|
|
gameObject.transform.parent = device.transform;
|
|
gameObject.transform.localPosition = Vector3.zero;
|
|
gameObject.transform.localEulerAngles = Vector3.zero;
|
|
gameObject.transform.localScale = Vector3.one;
|
|
|
|
|
|
}
|
|
rotSpeed = data.rotateSpeed;
|
|
gameObject.GetComponent<SpriteRenderer>().sortingOrder = data.order;
|
|
TypeEventSystem.Global.Register<OnPoint3DQuestionDestroy>(OnObjDestroy);
|
|
TypeEventSystem.Global.Register<StepStatusOnChange>(OnStepChanged);
|
|
|
|
|
|
#if VR
|
|
UIRoot.Instance.transform.Find("ZStylus").GetComponent<ZPointer>().OnObjectEntered.AddListener(OnObjEnter);
|
|
UIRoot.Instance.transform.Find("ZStylus").GetComponent<ZPointer>().OnObjectExited.AddListener(OnObjExit);
|
|
UIRoot.Instance.transform.Find("ZStylus").GetComponent<ZPointer>().OnClick.AddListener(OnClick);
|
|
#endif
|
|
}
|
|
|
|
#if VR
|
|
private void OnClick(ZPointer arg0, int arg1, GameObject arg2)
|
|
{
|
|
if (gameObject == arg2)
|
|
{
|
|
if (string.IsNullOrEmpty(data.clickEvent) == false)
|
|
{
|
|
StringEventSystem.Global.Send(data.clickEvent);
|
|
}
|
|
TypeEventSystem.Global.Send<OnPoint3DQuestionDestroy>();
|
|
}
|
|
}
|
|
|
|
private void OnObjExit(ZPointer arg0, GameObject arg1)
|
|
{
|
|
if (gameObject == arg1)
|
|
{
|
|
isEnter = false;
|
|
}
|
|
|
|
}
|
|
|
|
private void OnObjEnter(ZPointer arg0, GameObject arg1)
|
|
{
|
|
if (gameObject == arg1)
|
|
{
|
|
isEnter = true;
|
|
}
|
|
}
|
|
|
|
bool isEnter = false;
|
|
private void Update()
|
|
{
|
|
if (isEnter)
|
|
{
|
|
transform.Rotate(Vector3.forward * Time.deltaTime * rotSpeed);
|
|
}
|
|
}
|
|
#endif
|
|
|
|
private void OnStepChanged(StepStatusOnChange change)
|
|
{
|
|
OnObjDestroy(default);
|
|
}
|
|
|
|
private void OnObjDestroy(OnPoint3DQuestionDestroy destroy)
|
|
{
|
|
if (gameObject != null)
|
|
{
|
|
GameObject.Destroy(gameObject);
|
|
}
|
|
}
|
|
private void OnDestroy()
|
|
{
|
|
|
|
TypeEventSystem.Global.UnRegister<StepStatusOnChange>(OnStepChanged);
|
|
TypeEventSystem.Global.UnRegister<OnPoint3DQuestionDestroy>(OnObjDestroy);
|
|
}
|
|
|
|
private void OnMouseUpAsButton()
|
|
{
|
|
if (string.IsNullOrEmpty(data.clickEvent) == false)
|
|
{
|
|
StringEventSystem.Global.Send(data.clickEvent);
|
|
}
|
|
TypeEventSystem.Global.Send<OnPoint3DQuestionDestroy>();
|
|
}
|
|
|
|
private void OnMouseOver()
|
|
{
|
|
transform.Rotate(Vector3.forward * Time.deltaTime * rotSpeed);
|
|
}
|
|
|
|
|
|
}
|