protected Animator(SpriterEntity entity, IProviderFactory <TSprite, TSound> providerFactory = null) { Entity = entity; Animations = entity.Animations.ToDictionary(a => a.Name, a => a); Speed = 1.0f; if (providerFactory != null) { DataProvider = providerFactory.GetDataProvider(entity); SpriteProvider = providerFactory.GetSpriteProvider(entity); SoundProvider = providerFactory.GetSoundProvider(entity); } else { DataProvider = new DefaultFrameDataProvider(); SpriteProvider = new DefaultAssetProvider <TSprite>(); SoundProvider = new DefaultAssetProvider <TSound>(); } }