prevent repeat TriggerOnCollide triggers (#40428)
* prevent repeat TriggerOnCollide triggers * review comment: remove TriggerOnCollide when out of triggers
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user