protected virtual void ClientSetupSkeletonAnimation( bool isActive, IItem item, ICharacter character, IComponentSkeleton skeletonRenderer, List <IClientComponent> skeletonComponents) { if (isActive) { skeletonRenderer.RemoveAnimationTrack(trackIndex: AnimationTrackIndexes.Extra); skeletonRenderer.SetAnimation( trackIndex: AnimationTrackIndexes.Extra, animationName: this.ActiveLightCharacterAnimationName, isLooped: true); } else if (skeletonRenderer.GetCurrentAnimationName(AnimationTrackIndexes.Extra) != null) { // TODO: this is a hack - when an empty animation is added latest animation looping is breaking //skeletonRenderer.SetAnimationLoopMode(AnimationTrackIndexes.Extra, isLooped: false); skeletonRenderer.AddEmptyAnimation(AnimationTrackIndexes.Extra); } }