/* * 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(); } } } }