2026-06-05 13:44:39 +09:00

57 lines
1.8 KiB
C#

using Aurora.Api.Devices;
using System.Collections.Generic;
namespace VisionCommon {
/// <summary>
/// 모션의 포지션 매니저
/// </summary>
/// <typeparam name="T"></typeparam>
public class PositionManager<T> {
private object _lock = new object();
private Dictionary<T, IPositionAdapter> _adapters = new Dictionary<T, IPositionAdapter>();
/// <summary>
/// 포지션 어댑터를 등록한다.
/// </summary>
/// <param name="info">키 정보</param>
/// <param name="positionAdapter">포지션 어댑터</param>
public void SetAdapter(T info, IPositionAdapter positionAdapter) {
lock (_lock) {
if (!_adapters.ContainsKey(info)) {
_adapters.Add(info, positionAdapter);
}
}
}
/// <summary>
/// 포지션 어댑터를 얻어온다.
/// </summary>
/// <param name="info">키 정보</param>
/// <returns>포지션 어댑터</returns>
public IPositionAdapter GetAdapter(T info) {
lock (_lock) {
if (_adapters.ContainsKey(info)) {
return _adapters[info];
}
}
return null;
}
/// <summary>
/// 포지션을 얻어온다.
/// </summary>
/// <param name="info">키 정보</param>
/// <param name="positionType">포지션 타입</param>
/// <returns>포지션</returns>
public Position GetPosition(T info, ePositionType positionType) {
lock (_lock) {
var posAdapter = GetAdapter(info);
if (posAdapter == null) {
return null;
}
return posAdapter.GetPosition(positionType);
}
}
}
}