forked from FabianTerhorst/coreclr-module
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAsyncResource.cs
More file actions
112 lines (94 loc) · 4.18 KB
/
AsyncResource.cs
File metadata and controls
112 lines (94 loc) · 4.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
using System;
using System.Runtime.Loader;
using AltV.Net.Async.Elements.Factories;
using AltV.Net.Async.Elements.Pools;
using AltV.Net.CApi;
using AltV.Net.Elements.Entities;
namespace AltV.Net.Async
{
public abstract class AsyncResource : Resource
{
private readonly AltVAsync altVAsync;
private readonly bool forceAsync;
public AsyncResource(bool forceAsyncBaseObjects = false) : this(new DefaultTickSchedulerFactory())
{
forceAsync = forceAsyncBaseObjects;
}
public AsyncResource(ITickSchedulerFactory tickSchedulerFactory, bool forceAsyncBaseObjects = false)
{
altVAsync = new AltVAsync(tickSchedulerFactory);
forceAsync = forceAsyncBaseObjects;
}
public override void OnTick()
{
altVAsync.TickDelegate();
}
public override IBaseEntityPool GetBaseEntityPool(IEntityPool<IPlayer> playerPool,
IEntityPool<IVehicle> vehiclePool)
{
return new AsyncBaseBaseObjectPool(playerPool, vehiclePool);
}
public override IEntityPool<IPlayer> GetPlayerPool(IEntityFactory<IPlayer> playerFactory)
{
return new AsyncPlayerPool(playerFactory, forceAsync);
}
public override IEntityPool<IVehicle> GetVehiclePool(IEntityFactory<IVehicle> vehicleFactory)
{
return new AsyncVehiclePool(vehicleFactory, forceAsync);
}
public override IBaseObjectPool<IBlip> GetBlipPool(IBaseObjectFactory<IBlip> blipFactory)
{
return new AsyncBlipPool(blipFactory, forceAsync);
}
public override IBaseObjectPool<ICheckpoint> GetCheckpointPool(
IBaseObjectFactory<ICheckpoint> checkpointFactory)
{
return new AsyncCheckpointPool(checkpointFactory, forceAsync);
}
public override IBaseObjectPool<IVoiceChannel> GetVoiceChannelPool(
IBaseObjectFactory<IVoiceChannel> voiceChannelFactory)
{
return new AsyncVoiceChannelPool(voiceChannelFactory, forceAsync);
}
public override IBaseObjectPool<IColShape> GetColShapePool(IBaseObjectFactory<IColShape> colShapeFactory)
{
return new AsyncColShapePool(colShapeFactory, forceAsync);
}
public override Core GetCore(IntPtr nativePointer, IntPtr resourcePointer, AssemblyLoadContext assemblyLoadContext, ILibrary library, IBaseBaseObjectPool baseBaseObjectPool,
IBaseEntityPool baseEntityPool,
IEntityPool<IPlayer> playerPool,
IEntityPool<IVehicle> vehiclePool,
IBaseObjectPool<IBlip> blipPool,
IBaseObjectPool<ICheckpoint> checkpointPool,
IBaseObjectPool<IVoiceChannel> voiceChannelPool,
IBaseObjectPool<IColShape> colShapePool,
INativeResourcePool nativeResourcePool)
{
return new AsyncCore(nativePointer, resourcePointer, assemblyLoadContext, library, baseBaseObjectPool, baseEntityPool, playerPool, vehiclePool, blipPool, checkpointPool, voiceChannelPool, colShapePool, nativeResourcePool);
}
public override IBaseObjectFactory<IBlip> GetBlipFactory()
{
return forceAsync ? new AsyncBlipFactory() : base.GetBlipFactory();
}
public override IBaseObjectFactory<ICheckpoint> GetCheckpointFactory()
{
return forceAsync ? new AsyncCheckpointFactory() : base.GetCheckpointFactory();
}
public override IEntityFactory<IPlayer> GetPlayerFactory()
{
return forceAsync ? new AsyncPlayerFactory() : base.GetPlayerFactory();
}
public override IEntityFactory<IVehicle> GetVehicleFactory()
{
return forceAsync ? new AsyncVehicleFactory() : base.GetVehicleFactory();
}
public override IBaseObjectFactory<IColShape> GetColShapeFactory()
{
return forceAsync ? new AsyncColShapeFactory() : base.GetColShapeFactory();
}
public override IBaseObjectFactory<IVoiceChannel> GetVoiceChannelFactory()
{
return forceAsync ? new AsyncVoiceChannelFactory() : base.GetVoiceChannelFactory();
}
}
}