61 lines
2.2 KiB
C#
61 lines
2.2 KiB
C#
using Aurora.Api;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace VisionCommon {
|
|
/// <summary>
|
|
/// 패턴을 트래킹하기 위해 패턴 위치를 저장/관리하는 매니저
|
|
/// </summary>
|
|
public class PatternTrackingManager {
|
|
private static readonly Logger _Logger = new Logger(typeof(PatternTrackingManager).Name);
|
|
|
|
private static Dictionary<FovInfo, DataList> _PatternTrackings = new Dictionary<FovInfo, DataList>();
|
|
|
|
/// <summary>
|
|
/// 패턴 위치 추가
|
|
/// </summary>
|
|
/// <param name="fovInfo">FOV 키</param>
|
|
/// <param name="cross">패턴 위치</param>
|
|
public static void AddCross(FovInfo fovInfo, Cross cross) {
|
|
if (!_PatternTrackings.ContainsKey(fovInfo)) {
|
|
_PatternTrackings.Add(fovInfo, new DataList());
|
|
}
|
|
_PatternTrackings[fovInfo].Add(cross);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 모든 패턴 위치 리턴
|
|
/// </summary>
|
|
/// <param name="fovInfo">FOV 키</param>
|
|
/// <returns>모든 패턴 위치</returns>
|
|
public static List<Cross> GetCrosses(FovInfo fovInfo) {
|
|
if (_PatternTrackings.ContainsKey(fovInfo)) {
|
|
return _PatternTrackings[fovInfo].GetDataList().ConvertAll(o => (Cross)o);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 마지막 lastDataCnt개의 패턴 위치 리턴
|
|
/// </summary>
|
|
/// <param name="fovInfo">FOV 키</param>
|
|
/// <param name="lastDataCnt">마지막 패턴 위치 개수</param>
|
|
/// <returns>마지막 lastDataCnt개의 패턴 위치</returns>
|
|
public static List<Cross> GetCrosses(FovInfo fovInfo, int lastDataCnt) {
|
|
if (_PatternTrackings.ContainsKey(fovInfo)) {
|
|
return _PatternTrackings[fovInfo].GetDataList(lastDataCnt).ConvertAll(o => (Cross)o);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 모든 패턴 위치 초기화
|
|
/// </summary>
|
|
/// <param name="fovInfo">FOV 키</param>
|
|
public static void Clear(FovInfo fovInfo) {
|
|
if (_PatternTrackings.ContainsKey(fovInfo)) {
|
|
_PatternTrackings[fovInfo].Clear();
|
|
}
|
|
}
|
|
}
|
|
} |