AK056/Assets/script/device/AbstractDevice.cs
2025-05-07 11:20:40 +08:00

57 lines
1.3 KiB
C#

using Cinemachine;
using EasyInject.Attributes;
using UnityEngine;
/// <summary>
/// 抽象的设备类
/// </summary>
public abstract class AbstractDevice : MonoBehaviour, IWcsSocketDataHandle, IFollowHelp, IProcessCompleted, IMouseClick
{
[Autowired]
protected EventCompent eventCompent;
[Autowired]
protected CameraManage cameraManage;
[Header("镜头跟随")]
public Transform follow;
[Header("镜头看向")]
public Transform lookAt;
[Header("镜头偏移")]
public Vector3 offset;
public event IDevice.DataChangeEvent DataChange;
public event IDevice.DataChangeEvent ErrorMessage;
public abstract Transform Transform { get; }
public abstract string DeviceType { get; }
public abstract string DeviceCode { get; }
Transform IFollowHelp.Follow => follow;
Transform IFollowHelp.FookAt => lookAt;
public Vector3 Offset => offset;
public abstract DeviceData DeviceData { get; }
public virtual void MouseSingleClick()
{
if (follow && lookAt)
{
cameraManage.ShotCut(this);
}
}
public virtual void MouseDoubleClick()
{
}
public abstract void ProcessCompleted();
public virtual void DataHandle(object data, object other = null)
{
DataChange?.Invoke(data,other);
}
public abstract T DynamicData<T>();
}