namespace DanieleMarotta.RiversongCodeShowcase { [GameSystemGroup(typeof(EconomySystemGroup))] [UpdateAfter(typeof(ProductionTickGameSystem))] public class ProducerAnimationSystem : GameSystem, IUpdatable { [InjectService] private IEntityCache _entityCache; [InjectService] private IBuildingVisualizationCollection _buildingVisualizations; public ProducerAnimationSystem(IServiceLocator serviceLocator) : base(serviceLocator) { } public void Update() { foreach (var producer in _entityCache.GetProducers()) UpdateProducer(producer); } private void UpdateProducer(Building producer) { if (!_buildingVisualizations.TryGetVisualization(producer.Id, out var buildingVisualization)) return; if (!buildingVisualization.TryGetComponent(out var producerAnimation)) return; ref var productionState = ref producer.GetProductionStateRW(); producerAnimation.UpdateAnimation(productionState); } } }