prevent repeat TriggerOnCollide triggers (#40428)

* prevent repeat TriggerOnCollide triggers

* review comment: remove TriggerOnCollide when out of triggers
This commit is contained in:
Charlie Morley
2025-12-29 11:39:10 -06:00
committed by Vanessa
parent 2718a9c390
commit 0668879577
6 changed files with 34 additions and 1 deletions
@@ -18,8 +18,21 @@ public sealed partial class TriggerSystem
private void OnCollide(Entity<TriggerOnCollideComponent> ent, ref StartCollideEvent args)
{
if (args.OurFixtureId == ent.Comp.FixtureID && (!ent.Comp.IgnoreOtherNonHard || args.OtherFixture.Hard))
if (
args.OurFixtureId == ent.Comp.FixtureID
&& (!ent.Comp.IgnoreOtherNonHard || args.OtherFixture.Hard)
&& (ent.Comp.MaxTriggers == null || ent.Comp.MaxTriggers > 0)
)
{
if (ent.Comp.MaxTriggers != null)
{
ent.Comp.MaxTriggers--;
Dirty(ent);
if (ent.Comp.MaxTriggers <= 0)
RemCompDeferred<TriggerOnCollideComponent>(ent);
}
Trigger(ent.Owner, args.OtherEntity, ent.Comp.KeyOut);
}
}
private void OnStepTriggered(Entity<TriggerOnStepTriggerComponent> ent, ref StepTriggeredOffEvent args)