Code/Sprite/SpriteAnimationSystem.cs
using System.Linq;
using Sandbox;
using Sandbox.Diagnostics;
using Sandbox.Utility;
namespace SpriteTools;
public class SpriteAnimationSystem : GameObjectSystem
{
public SpriteAnimationSystem(Scene scene) : base(scene)
{
Listen(Stage.UpdateBones, 15, UpdateSpriteAnimation, "UpdateSpriteAnimation");
var sprites = ResourceLibrary.GetAll<SpriteResource>().ToArray();
foreach (var sprite in sprites)
{
foreach (var anim in sprite.Animations)
{
TextureAtlas.FromAnimation(anim);
}
}
}
void UpdateSpriteAnimation()
{
SpriteComponent[] sprites = Scene.GetAllComponents<SpriteComponent>().ToArray();
Parallel.ForEach(sprites, sprite =>
{
sprite.UpdateSceneObject();
});
foreach (var sprite in sprites)
{
sprite.RunBroadcastQueue();
}
}
}