Add backend plumbing for model loaders.

This commit is contained in:
Paul Chote
2017-06-09 15:41:16 +00:00
committed by reaperrr
parent 086fc88e3e
commit e1cd00c1dd
15 changed files with 136 additions and 14 deletions

View File

@@ -40,6 +40,7 @@ namespace OpenRA
public Session LobbyInfo { get { return OrderManager.LobbyInfo; } }
public readonly MersenneTwister SharedRandom;
public readonly IModelCache ModelCache;
public Player[] Players = new Player[0];
@@ -147,7 +148,7 @@ namespace OpenRA
}
}
internal World(Map map, OrderManager orderManager, WorldType type)
internal World(ModData modData, Map map, OrderManager orderManager, WorldType type)
{
Type = type;
OrderManager = orderManager;
@@ -156,6 +157,8 @@ namespace OpenRA
Timestep = orderManager.LobbyInfo.GlobalSettings.Timestep;
SharedRandom = new MersenneTwister(orderManager.LobbyInfo.GlobalSettings.RandomSeed);
ModelCache = modData.ModelSequenceLoader.CacheModels(map, modData, map.Rules.ModelSequences);
var worldActorType = type == WorldType.Editor ? "EditorWorld" : "World";
WorldActor = CreateActor(worldActorType, new TypeDictionary());
ActorMap = WorldActor.Trait<IActorMap>();
@@ -437,6 +440,8 @@ namespace OpenRA
Game.Sound.StopAudio();
Game.Sound.StopVideo();
ModelCache.Dispose();
// Dispose newer actors first, and the world actor last
foreach (var a in actors.Values.Reverse())
a.Dispose();