This commit is contained in:
2026-01-31 23:24:13 +02:00
parent be0c819c8b
commit 12c1360ae7
58 changed files with 1902 additions and 238 deletions
+39
View File
@@ -0,0 +1,39 @@
using System.Collections.Generic;
using Godot;
public partial class ProjectilePool : Node
{
[Export] private PackedScene _scene;
[Export] private int _poolSize;
private readonly Queue<Projectile> _pool = new();
public override void _Ready()
{
for (int i = 0; i < _poolSize; i++)
{
_pool.Enqueue(CreateProjectile());
}
}
private Projectile CreateProjectile()
{
var p = _scene.Instantiate<Projectile>();
p.OnDespawn += ReturnToPool;
return p;
}
public Projectile Get()
{
var p = _pool.Count > 0 ? _pool.Dequeue() : CreateProjectile();
return p;
}
private void ReturnToPool(Projectile p)
{
p.GetParent()?.RemoveChild(p);
p.ProcessMode = ProcessModeEnum.Disabled;
_pool.Enqueue(p);
}
}