2025-02-12 16:20:55 +01:00
|
|
|
|
using Godot;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Cirno.Scripts.Components;
|
|
|
|
|
|
|
|
|
|
|
|
public partial class AutodeleteParticle : GpuParticles2D
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
[Export]
|
|
|
|
|
|
public double LifeTime { get; private set; }
|
2025-02-20 16:12:53 +01:00
|
|
|
|
|
|
|
|
|
|
[Export]
|
|
|
|
|
|
public bool AutoStart { get; private set; }
|
2025-02-12 16:20:55 +01:00
|
|
|
|
|
|
|
|
|
|
private double _timer = 0;
|
|
|
|
|
|
|
2025-02-20 16:12:53 +01:00
|
|
|
|
public override void _Ready()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (AutoStart)
|
|
|
|
|
|
{
|
|
|
|
|
|
Init();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-02-12 16:20:55 +01:00
|
|
|
|
public void Init()
|
|
|
|
|
|
{
|
|
|
|
|
|
this.Emitting = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override void _Process(double delta)
|
|
|
|
|
|
{
|
|
|
|
|
|
_timer += delta;
|
|
|
|
|
|
|
|
|
|
|
|
if (_timer >= LifeTime || this.Emitting == false)
|
|
|
|
|
|
{
|
|
|
|
|
|
QueueFree();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|