using Cinemachine;
using EasyInject.Attributes;
using UnityEngine;
///
/// 抽象的设备类
///
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();
}