Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Change Log

## [0.8.3-beta] - Sept 11, 2024
- SharedData.ClearData is now Obsolete and will be removed in a future release. Use SharedData.ClearAllData instead.
- Added SharedData.ClearAllData method to clear all shared data.
- Added SharedData.RemoveData(string key) method to remove a specific key from the shared data.
- Added SharedData.GetKeys() method to return all keys in the shared data.

## [0.8.2-beta] - Sept 09, 2024
- Added TryGetData and HasData methods to the SharedData class

Expand Down
44 changes: 43 additions & 1 deletion Runtime/Data/SharedData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,25 @@ public interface ISharedData
{
event Action<string, object> OnDataChanged;
event Action OnDataCleared;
event Action<string> OnDataRemoved;

T GetData<T>(string key);
bool TryGetData<T>(string key, out T value);
bool HasData(string key);
void SetData<T>(string key, T value);
void RemoveData(string key);
void ClearAllData();
IEnumerable<string> GetKeys();

[Obsolete("Use ClearAllData() instead. This method will be removed in a future version.")]
void ClearData();
}

public class SharedData : ISharedData
{
public event Action<string, object> OnDataChanged;
public event Action OnDataCleared;
public event Action<string> OnDataRemoved;

private readonly Dictionary<string, object> _data = new Dictionary<string, object>();
private readonly ReaderWriterLockSlim _lock = new ReaderWriterLockSlim();
Expand Down Expand Up @@ -95,7 +102,23 @@ public void SetData<T>(string key, T value)
}
}

public void ClearData()
public void RemoveData(string key)
{
_lock.EnterWriteLock();
try
{
if (_data.Remove(key))
{
OnDataRemoved?.Invoke(key);
}
}
finally
{
_lock.ExitWriteLock();
}
}

public void ClearAllData()
{
_lock.EnterWriteLock();
try
Expand All @@ -108,5 +131,24 @@ public void ClearData()
_lock.ExitWriteLock();
}
}

[Obsolete("Use ClearAllData() instead. This method will be removed in a future version.")]
public void ClearData()
{
ClearAllData();
}

public IEnumerable<string> GetKeys()
{
_lock.EnterReadLock();
try
{
return _data.Keys;
}
finally
{
_lock.ExitReadLock();
}
}
}
}
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "com.nonatomic.visualstatemachinev2",
"version": "0.8.2-beta",
"version": "0.8.3-beta",
"displayName": "Visual State Machine V2",
"description": "Visual State Machine V2",
"unity": "2022.3",
Expand Down