using GameCore.ECS; using GameCore.ECS.Interfaces; using GameCore.Physics; namespace GameCore.Combat; public class ProjectileCleanupSystem : ISystem { public void Update(World world, float deltaTime) { var projectiles = world.GetEntitiesWith(); foreach (var projectile in projectiles) { var projectileData = world.GetComponent(projectile); var position = world.GetComponent(projectile); var velocity = world.GetComponent(projectile); if (projectileData == null || position == null || velocity == null) continue; projectileData.Lifetime -= deltaTime; if (projectileData.Lifetime <= 0f) world.AddComponent(projectile, new DeathComponent()); } } }