Skip to content

Commit 913a87d

Browse files
committed
use delegates in asynccontentmanager
1 parent 56fa955 commit 913a87d

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

Assets/Scripts/OpenTS2/Content/AsyncContentManager.cs

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,10 @@ namespace OpenTS2.Content
1010
{
1111
public class AsyncContentManager
1212
{
13-
public class Request
13+
public class AssetRequest
1414
{
1515
public bool Finished = false;
1616
public Results Result;
17-
public ResourceKey Key;
1817
public AbstractAsset Asset;
1918
}
2019
public enum Results
@@ -24,7 +23,7 @@ public enum Results
2423
}
2524
public static AsyncContentManager Instance { get; private set; }
2625
private Thread _thread;
27-
private Queue<Request> _requests = new Queue<Request>();
26+
private Queue<Action> _requests = new Queue<Action>();
2827
private ContentManager _contentManager;
2928
public AsyncContentManager()
3029
{
@@ -36,13 +35,18 @@ public AsyncContentManager()
3635
_thread.Start();
3736
}
3837

39-
public Request RequestAsset(ResourceKey key)
38+
public AssetRequest RequestAsset(ResourceKey key)
4039
{
41-
var request = new Request();
42-
request.Key = key;
43-
_requests.Enqueue(request);
40+
var requestResult = new AssetRequest();
41+
_requests.Enqueue(() =>
42+
{
43+
var asset = _contentManager.GetAsset(key);
44+
requestResult.Asset = asset;
45+
requestResult.Finished = true;
46+
requestResult.Result = asset != null ? Results.Success : Results.Failed;
47+
});
4448
_thread.Interrupt();
45-
return request;
49+
return requestResult;
4650
}
4751

4852
private void ThreadLoop()
@@ -51,11 +55,8 @@ private void ThreadLoop()
5155
{
5256
if (_requests.Count > 0)
5357
{
54-
var request = _requests.Peek();
55-
request.Asset = _contentManager.GetAsset(request.Key);
56-
request.Result = request.Asset != null ? Results.Success : Results.Failed;
57-
request.Finished = true;
58-
_requests.Dequeue();
58+
var request = _requests.Dequeue();
59+
request.Invoke();
5960
}
6061
else
6162
{

0 commit comments

Comments
 (0)