@@ -10,11 +10,10 @@ namespace OpenTS2.Content
10
10
{
11
11
public class AsyncContentManager
12
12
{
13
- public class Request
13
+ public class AssetRequest
14
14
{
15
15
public bool Finished = false ;
16
16
public Results Result ;
17
- public ResourceKey Key ;
18
17
public AbstractAsset Asset ;
19
18
}
20
19
public enum Results
@@ -24,7 +23,7 @@ public enum Results
24
23
}
25
24
public static AsyncContentManager Instance { get ; private set ; }
26
25
private Thread _thread ;
27
- private Queue < Request > _requests = new Queue < Request > ( ) ;
26
+ private Queue < Action > _requests = new Queue < Action > ( ) ;
28
27
private ContentManager _contentManager ;
29
28
public AsyncContentManager ( )
30
29
{
@@ -36,13 +35,18 @@ public AsyncContentManager()
36
35
_thread . Start ( ) ;
37
36
}
38
37
39
- public Request RequestAsset ( ResourceKey key )
38
+ public AssetRequest RequestAsset ( ResourceKey key )
40
39
{
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
+ } ) ;
44
48
_thread . Interrupt ( ) ;
45
- return request ;
49
+ return requestResult ;
46
50
}
47
51
48
52
private void ThreadLoop ( )
@@ -51,11 +55,8 @@ private void ThreadLoop()
51
55
{
52
56
if ( _requests . Count > 0 )
53
57
{
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 ( ) ;
59
60
}
60
61
else
61
62
{
0 commit comments