private void UpdateAnimationState(StateChangeEvent stateChangeEvent) { var entityId = stateChangeEvent.EntityId; if (!ComponentManager.ContainsAllComponents( entityId, typeof(SpriteAnimationBindings) )) { return; } var animationBindings = ComponentManager.GetEntityComponentOrDefault <SpriteAnimationBindings>(entityId); var spriteAnimation = ComponentManager.GetEntityComponentOrDefault <SpriteAnimationComponent>(entityId); if (spriteAnimation == null) { spriteAnimation = new SpriteAnimationComponent(); ComponentManager.AddComponentToEntity(spriteAnimation, entityId); spriteAnimation.AnimationStarted = stateChangeEvent.EventTime; } var binding = animationBindings.Bindings .FirstOrDefault(e => BindingsMatch(e.StateConditions, stateChangeEvent.NewState)); if (binding == null) { spriteAnimation.NextAnimatedState = null; } else { spriteAnimation.NextAnimatedState = binding; } }