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(); }