/*
* 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 {
///
/// 얼라인 에이전트 매니저
///
public class AlignAgentManager {
private static object _lock = new object();
private static Dictionary _AlignAgents = new Dictionary();
///
/// 얼라인 에이전트를 Set한다
///
/// 얼라인 정보
/// 얼라인 계산
/// 성공 유무
public static void SetAlignAgent(AlignInfo alignInfo, Aligner aligner) {
lock (_lock) {
if (!_AlignAgents.ContainsKey(alignInfo)) {
_AlignAgents.Add(alignInfo, aligner);
}
else {
_AlignAgents[alignInfo] = aligner;
}
}
}
///
/// 얼라인 에이전트를 Get한다
///
/// 얼라인 정보
/// 얼라인 에이전트
public static Aligner GetAlignAgent(AlignInfo alignInfo) {
lock (_lock) {
if (_AlignAgents.ContainsKey(alignInfo)) {
return _AlignAgents[alignInfo];
}
}
return null;
}
///
/// 사용하지 않는 에이전트를 삭제한다
///
/// 최신 얼라인 정보들
/// 성공 유무
public static void DeleteUnusedAgent(List newAlignInfos) {
lock (_lock) {
foreach (AlignInfo oldAlignInfo in _AlignAgents.Keys.ToList()) {
if (!newAlignInfos.Contains(oldAlignInfo)) {
if (_AlignAgents.ContainsKey(oldAlignInfo)) {
_AlignAgents.Remove(oldAlignInfo);
}
}
}
}
}
///
/// 새로 추가된 얼라인 정보인지 확인한다
///
/// 최신 얼라인 정보들
/// 추가된 얼라인 유무
public static bool IsNewAlignInfo(AlignInfo alignInfo) {
lock (_lock) {
if (!_AlignAgents.ContainsKey(alignInfo)) {
return true;
}
else {
return false;
}
}
}
///
/// 얼라인 에이전트를 초기화한다.
///
public static void Clear() {
lock (_lock) {
_AlignAgents.Clear();
}
}
}
}