From dc3237e80eaf71fcce8ba04d1609f070d186b65e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9F=20Obalar?= Date: Mon, 29 Aug 2022 18:50:04 +0200 Subject: [PATCH 1/2] Added ConcurrentDictionary ATrackingEntity - Changed List echoes to ConcurrentDictionary - Modified getters and setters - Refactored methods that accessed this values ATracklinkPlayerManager - Changed the way of feet data being added from the aPlayer to trackRecord --- .../Managers/ATracklinkPlayerManager.cs | 13 ++++++++++--- Assets/UnityPharusAPI/Player/ATrackingEntity.cs | 9 +++++---- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/Assets/UnityPharusAPI/Managers/ATracklinkPlayerManager.cs b/Assets/UnityPharusAPI/Managers/ATracklinkPlayerManager.cs index 68921de..2d9c317 100644 --- a/Assets/UnityPharusAPI/Managers/ATracklinkPlayerManager.cs +++ b/Assets/UnityPharusAPI/Managers/ATracklinkPlayerManager.cs @@ -94,8 +94,11 @@ public virtual void AddPlayer(TrackRecord trackRecord) aPlayer.Orientation = new Vector2(trackRecord.orientation.x, trackRecord.orientation.y); aPlayer.Speed = trackRecord.speed; aPlayer.Echoes.Clear(); - trackRecord.echoes.AddToVector2List(VectorAdapter.ToPharusVector2List(aPlayer.Echoes)); - + // trackRecord.echoes.AddToVector2List(VectorAdapter.ToPharusVector2List(aPlayer.Echoes)); + foreach (KeyValuePair keyValuePair in aPlayer.Echoes) + { + trackRecord.echoes.Add(new Vector2f(keyValuePair.Value.x, keyValuePair.Value.y)); + } aPlayer.gameObject.name = string.Format("PharusPlayer_{0}", aPlayer.TrackID); _playerList.Add(aPlayer); @@ -118,7 +121,11 @@ public virtual void UpdatePlayerPosition(TrackRecord trackRecord) aPlayer.Speed = trackRecord.speed; // use AddToVector2List() instead of ToVector2List() as it is more performant aPlayer.Echoes.Clear(); - trackRecord.echoes.AddToVector2List(VectorAdapter.ToPharusVector2List(aPlayer.Echoes)); + // trackRecord.echoes.AddToVector2List(VectorAdapter.ToPharusVector2List(aPlayer.Echoes)); + foreach (KeyValuePair keyValuePair in aPlayer.Echoes) + { + trackRecord.echoes.Add(new Vector2f(keyValuePair.Value.x, keyValuePair.Value.y)); + } //aPlayer.SetPosition(TracklinkTrackingService.GetScreenPositionFromRelativePosition(trackRecord.relPos)); aPlayer.SetPosition(VectorAdapter.ToUnityVector2(TrackingAdapter.GetScreenPositionFromRelativePosition(trackRecord.relPos.x, trackRecord.relPos.y))); return; diff --git a/Assets/UnityPharusAPI/Player/ATrackingEntity.cs b/Assets/UnityPharusAPI/Player/ATrackingEntity.cs index 60dcf6a..33b8b37 100644 --- a/Assets/UnityPharusAPI/Player/ATrackingEntity.cs +++ b/Assets/UnityPharusAPI/Player/ATrackingEntity.cs @@ -1,4 +1,5 @@ using Assets.UnityPharusAPI.Helper; +using System.Collections.Concurrent; using System.Collections.Generic; using UnityEngine; using UnityPharusAPI; @@ -16,7 +17,7 @@ public abstract class ATrackingEntity : MonoBehaviour private Vector2 _relativePosition; private Vector2 _orientation; private float _speed; - private List _echoes = new List(); + private ConcurrentDictionary _echoes = new ConcurrentDictionary(); #region properties /// @@ -76,7 +77,7 @@ public float Speed /// /// A list of the track's echoes (feet) as Vector2 /// - public List Echoes + public ConcurrentDictionary Echoes { get { return _echoes; } set { _echoes = value; } @@ -99,9 +100,9 @@ private void OnDrawGizmos() Gizmos.color = Color.red; // DEBUG DRAW ECHOES - foreach (Vector2 echo in Echoes) + foreach (KeyValuePair keyValuePair in Echoes.ToArray()) { - Gizmos.DrawWireSphere (VectorAdapter.ToUnityVector2(TrackingAdapter.GetScreenPositionFromRelativePosition(echo.x, echo.y)), 12f); + Gizmos.DrawWireSphere (VectorAdapter.ToUnityVector2(TrackingAdapter.GetScreenPositionFromRelativePosition(keyValuePair.Value.x, keyValuePair.Value.y)), 12f); } } } From 57ca92f1aac0620059a8137dc976bd9214fd3ee8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9F=20Obalar?= Date: Tue, 30 Aug 2022 17:34:18 +0200 Subject: [PATCH 2/2] Changed addition of feet data to the player --- Assets/UnityPharusAPI/Managers/ATracklinkPlayerManager.cs | 8 ++++---- Assets/UnityPharusAPI/Player/ATrackingEntity.cs | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Assets/UnityPharusAPI/Managers/ATracklinkPlayerManager.cs b/Assets/UnityPharusAPI/Managers/ATracklinkPlayerManager.cs index 2d9c317..b4160fe 100644 --- a/Assets/UnityPharusAPI/Managers/ATracklinkPlayerManager.cs +++ b/Assets/UnityPharusAPI/Managers/ATracklinkPlayerManager.cs @@ -95,9 +95,9 @@ public virtual void AddPlayer(TrackRecord trackRecord) aPlayer.Speed = trackRecord.speed; aPlayer.Echoes.Clear(); // trackRecord.echoes.AddToVector2List(VectorAdapter.ToPharusVector2List(aPlayer.Echoes)); - foreach (KeyValuePair keyValuePair in aPlayer.Echoes) + for (int i = 0; i < trackRecord.echoes.Count; i++) { - trackRecord.echoes.Add(new Vector2f(keyValuePair.Value.x, keyValuePair.Value.y)); + aPlayer.Echoes.TryAdd(i, new Vector2(trackRecord.echoes[i].x, trackRecord.echoes[i].y)); } aPlayer.gameObject.name = string.Format("PharusPlayer_{0}", aPlayer.TrackID); @@ -122,9 +122,9 @@ public virtual void UpdatePlayerPosition(TrackRecord trackRecord) // use AddToVector2List() instead of ToVector2List() as it is more performant aPlayer.Echoes.Clear(); // trackRecord.echoes.AddToVector2List(VectorAdapter.ToPharusVector2List(aPlayer.Echoes)); - foreach (KeyValuePair keyValuePair in aPlayer.Echoes) + for(int i = 0; i < trackRecord.echoes.Count; i++) { - trackRecord.echoes.Add(new Vector2f(keyValuePair.Value.x, keyValuePair.Value.y)); + aPlayer.Echoes.TryAdd(i, new Vector2(trackRecord.echoes[i].x, trackRecord.echoes[i].y)); } //aPlayer.SetPosition(TracklinkTrackingService.GetScreenPositionFromRelativePosition(trackRecord.relPos)); aPlayer.SetPosition(VectorAdapter.ToUnityVector2(TrackingAdapter.GetScreenPositionFromRelativePosition(trackRecord.relPos.x, trackRecord.relPos.y))); diff --git a/Assets/UnityPharusAPI/Player/ATrackingEntity.cs b/Assets/UnityPharusAPI/Player/ATrackingEntity.cs index 33b8b37..e443696 100644 --- a/Assets/UnityPharusAPI/Player/ATrackingEntity.cs +++ b/Assets/UnityPharusAPI/Player/ATrackingEntity.cs @@ -75,7 +75,7 @@ public float Speed } /// - /// A list of the track's echoes (feet) as Vector2 + /// A Dictionary of the track's echoes (feet) as key,value(integer,Vector2) pair /// public ConcurrentDictionary Echoes {