57 lines
1.8 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
}
|