2025-01-21 11:47:12 +08:00

72 lines
2.0 KiB
C#

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).UnRegisterWhenGameObjectDestroyed(gameObject);
TypeEventSystem.Global.Register<StepStatusOnChange>(OnStepChanged);
}
private void OnStepChanged(StepStatusOnChange change)
{
OnObjDestroy(default);
}
private void OnObjDestroy(OnPoint3DQuestionDestroy destroy)
{
TypeEventSystem.Global.UnRegister<StepStatusOnChange>(OnStepChanged);
GameObject.Destroy(gameObject);
}
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);
}
}