using System; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using MonoGameBlank2dStartKit.Core.Content; using MoonTools.ECS; namespace MonoGameBlank2dStartKit.Core.Systems; public class TextureDrawSystem : MoonTools.ECS.System { private readonly Assets _assets; private readonly SpriteBatch _spriteBatch; private readonly Filter _unrotatedFilter; private readonly Filter _rotatedFilter; public TextureDrawSystem(World world, Assets assets, SpriteBatch spriteBatch) : base(world) { _assets = assets; _spriteBatch = spriteBatch; _unrotatedFilter = FilterBuilder.Include().Include().Exclude().Build(); _rotatedFilter = FilterBuilder.Include().Include().Include().Build(); } public override void Update(TimeSpan delta) { foreach (var entity in _unrotatedFilter.Entities) { var texture = _assets.GetTexture2D(World.Get(entity).ImageId); var position = World.Get(entity).Vector2; _spriteBatch.Draw(texture, position, Color.White); } foreach (var entity in _rotatedFilter.Entities) { var texture = _assets.GetTexture2D(World.Get(entity).ImageId); var position = World.Get(entity).Vector2; var rotation = World.Get(entity); _spriteBatch.Draw(texture, position, null, Color.White, rotation.Value, rotation.Origin, new Vector2(1, 1), SpriteEffects.None, 1); } } }