91 lines
3.0 KiB
C#
91 lines
3.0 KiB
C#
/*
|
|
* Copyright (c) 2025 LG Electronics Inc.
|
|
* SPDX-License-Identifier: LicenseRef-LGE-Proprietary
|
|
*/
|
|
using VisionCommon;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Windows.Media.Animation;
|
|
|
|
namespace VisionAligner {
|
|
/// <summary>
|
|
/// 얼라인 에이전트 매니저
|
|
/// </summary>
|
|
public class AlignAgentManager {
|
|
private static object _lock = new object();
|
|
private static Dictionary<AlignInfo, Aligner> _AlignAgents = new Dictionary<AlignInfo, Aligner>();
|
|
|
|
/// <summary>
|
|
/// 얼라인 에이전트를 Set한다
|
|
/// </summary>
|
|
/// <param name="alignInfo">얼라인 정보</param>
|
|
/// <param name="aligner">얼라인 계산</param>
|
|
/// <returns>성공 유무</returns>
|
|
public static void SetAlignAgent(AlignInfo alignInfo, Aligner aligner) {
|
|
lock (_lock) {
|
|
if (!_AlignAgents.ContainsKey(alignInfo)) {
|
|
_AlignAgents.Add(alignInfo, aligner);
|
|
}
|
|
else {
|
|
_AlignAgents[alignInfo] = aligner;
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 얼라인 에이전트를 Get한다
|
|
/// </summary>
|
|
/// <param name="alignInfo">얼라인 정보</param>
|
|
/// <returns>얼라인 에이전트</returns>
|
|
public static Aligner GetAlignAgent(AlignInfo alignInfo) {
|
|
lock (_lock) {
|
|
if (_AlignAgents.ContainsKey(alignInfo)) {
|
|
return _AlignAgents[alignInfo];
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 사용하지 않는 에이전트를 삭제한다
|
|
/// </summary>
|
|
/// <param name="newAlignInfos">최신 얼라인 정보들</param>
|
|
/// <returns>성공 유무</returns>
|
|
public static void DeleteUnusedAgent(List<AlignInfo> newAlignInfos) {
|
|
lock (_lock) {
|
|
foreach (AlignInfo oldAlignInfo in _AlignAgents.Keys.ToList()) {
|
|
if (!newAlignInfos.Contains(oldAlignInfo)) {
|
|
if (_AlignAgents.ContainsKey(oldAlignInfo)) {
|
|
_AlignAgents.Remove(oldAlignInfo);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 새로 추가된 얼라인 정보인지 확인한다
|
|
/// </summary>
|
|
/// <param name="alignInfo">최신 얼라인 정보들</param>
|
|
/// <returns>추가된 얼라인 유무</returns>
|
|
public static bool IsNewAlignInfo(AlignInfo alignInfo) {
|
|
lock (_lock) {
|
|
if (!_AlignAgents.ContainsKey(alignInfo)) {
|
|
return true;
|
|
}
|
|
else {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 얼라인 에이전트를 초기화한다.
|
|
/// </summary>
|
|
public static void Clear() {
|
|
lock (_lock) {
|
|
_AlignAgents.Clear();
|
|
}
|
|
}
|
|
}
|
|
} |